12 MFC常用控件(一)
文章目录
- button 按钮
- 设置默认按钮按下回车后会响应
- 禁用
- 开启禁用
- 设置隐藏
- 设置显示
- 设置图片
- 设置Icon
- 设置光标
- Cbutton 类
- 创建按钮
- 创建消息
- 单选按钮
- 多选按钮
- 编辑框
- 组合框
- 下拉框操作
- CListBox
- 插入数据
- 获取当前选中
- CListCtrl
- 插入数据
- 设置表头
- 修改
- 删除
button 按钮
设置默认按钮按下回车后会响应
void CDemoDlg::OnBnClickedBtnTest()
{MessageBox(L"按下回车");
}
禁用
开启禁用
GetDlgItem(IDC_BTN_TEST)->EnableWindow(TRUE);
设置隐藏
设置显示
GetDlgItem(IDC_BTN_TEST)->ShowWindow(SW_SHOW);
设置图片
开启位图
放置BMP图片
选择Bitmap
在文件里选择所有文件导入图片
设置属性修改ID
//加载图片CBitmap bmp;bmp.LoadBitmap(IDB_TEST);//获取图片大小BITMAP logBmp;bmp.GetBitmap(&logBmp);//获取按钮CButton* pTestBtn = (CButton*)GetDlgItem(IDC_BTN_TEST);pTestBtn->MoveWindow(0, 0, logBmp.bmWidth, logBmp.bmHeight);//将图片与按钮大小一致pTestBtn->SetBitmap(bmp);
设置Icon
CButton* pTestBtn = (CButton*)GetDlgItem(IDC_BTN_TEST);pTestBtn->SetIcon(m_hIcon);
设置光标
//设置光标
BOOL CDemoDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{if (pWnd->GetDlgCtrlID() == IDC_BTN_TEST)//获取窗口{HCURSOR hCursor = LoadCursor(NULL, IDC_CROSS);SetCursor(hCursor);return TRUE;}return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}
Cbutton 类
创建按钮
#define IDC_BTN_TEST2 1025CButton m_button;m_button.Create(L"自创button", WS_CHILD | WS_VISIBLE, CRect(100, 100, 200, 200), this, IDC_BTN_TEST2);
创建消息
消息映射
void CDemoDlg::OnBnClickedBtnTest2()
{MessageBox(L"Test2");
}
单选按钮
单选按钮选组长(必须)
CButton m_radio;
m_radio.Create(L"男", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, CRect(20, 20, 70, 50), this, 1234);m_radio.SetCheck(0);
多选按钮
CButton m_radio;m_radio.Create(L"男", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON|BS_CHECKBOX, CRect(20, 20, 70, 50), this, 1234);m_radio.SetCheck(0);
编辑框
int CDemoEditDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CDialogEx::OnCreate(lpCreateStruct) == -1)return -1;//获取客户区大小CRect rect;GetClientRect(&rect);m_edit.Create(WS_CHILD | WS_VISIBLE |WS_VSCROLL| WS_BORDER | ES_WANTRETURN | ES_MULTILINE | ES_LEFT | ES_AUTOVSCROLL, rect, this, IDC_TEST_EDIT);//m_edit.ModifyStyle(WS_);//移除风格return 0;
}
//滚动响应
void CDemoEditDlg::OnVscrollEdit1()
{//m_edit.ModifyStyle(0,WS_VSCROLL);//DWORD dwStyle = GetWindowLong(m_edit.m_hWnd, GWL_STYLE);//获取原来的风格//dwStyle = dwStyle | WS_VSCROLL;//SetWindowLong(m_edit.m_hWnd, GWL_STYLE, dwStyle);}
组合框
写入数据,每个数据之间用封号隔开
//插入数据CComboBox* m_pcombBox = (CComboBox*)GetDlgItem(IDC_COMBO2);//获取combBoxm_pcombBox->AddString(L"中国");m_pcombBox->AddString(L"美国");m_pcombBox->AddString(L"日本");m_pcombBox->InsertString(1, L"印度");//设置插入位置m_pcombBox->SetCurSel(2);//设置当前所选
取消排序
组合框类型
下拉框操作
void CDemoEditDlg::OnBnClickedButton1()
{CComboBox* m_pcombBox = (CComboBox*)GetDlgItem(IDC_COMBO2);//获取combBox//m_pcombBox->DeleteString(0);//删除CString str;//m_pcombBox->GetLBText(2, str);//获取文本//MessageBox(str);m_pcombBox->GetWindowText(str);//获取顶层文本MessageBox(str);
}
CListBox
插入数据
CListBox* listbox = (CListBox*)GetDlgItem(IDC_LIST1);listbox->InsertString(0, L"中国");listbox->InsertString(0, L"美国");listbox->InsertString(0, L"俄罗斯");
获取当前选中
void CDemoEditDlg::OnBnClickedButton2()
{CString str;CListBox* listbox = (CListBox*)GetDlgItem(IDC_LIST1);//listbox->GetSel(0);//返回选中的状态int nSel = listbox->GetCurSel();listbox->GetText(nSel,str);MessageBox(str);
}
CListCtrl
插入数据
CListCtrl* listctrl= (CListCtrl*)GetDlgItem(IDC_LIST2);listctrl->InsertItem(0, L"中国");listctrl->InsertItem(0, L"美国");listctrl->InsertItem(0, L"俄罗斯");
改变样式风格
设置表头
总是选中
CListCtrl* listctrl= (CListCtrl*)GetDlgItem(IDC_LIST2);listctrl->SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//设置拓展风格,整行选,获得网格线listctrl->InsertColumn(0, L"国家", LVCFMT_LEFT,100);listctrl->InsertColumn(1, L"民族", LVCFMT_CENTER, 100);listctrl->InsertColumn(2, L"省份", LVCFMT_RIGHT, 100);listctrl->InsertItem(0, L"中国");listctrl->SetItemText(0, 1, L"汉");listctrl->SetItemText(0, 2, L"浙江");listctrl->InsertItem(0, L"美国");listctrl->InsertItem(0, L"俄罗斯");
修改
void CDemoEditDlg::OnBnClickedButton3()
{CListCtrl* listctrl = (CListCtrl*)GetDlgItem(IDC_LIST2);//获取数据信息int nCount = listctrl->GetItemCount();//获取选中的行数int nSel=listctrl->GetSelectionMark();if (nSel == -1){MessageBox(L"没选中");return;}//获取选中的内容//CString str1=listctrl->GetItemText(nSel, 0);//MessageBox(str1);listctrl->SetItemText(nSel, 2, L"江西");//修改}
删除
void CDemoEditDlg::OnBnClickedButton4()
{CListCtrl* listctrl = (CListCtrl*)GetDlgItem(IDC_LIST2);//删除POSITION pos = listctrl->GetFirstSelectedItemPosition();int nSel = listctrl->GetNextSelectedItem(pos);listctrl->DeleteItem(nSel);//删除
}
相关文章:

12 MFC常用控件(一)
文章目录 button 按钮设置默认按钮按下回车后会响应禁用开启禁用设置隐藏设置显示设置图片设置Icon设置光标 Cbutton 类创建按钮创建消息单选按钮多选按钮 编辑框组合框下拉框操作 CListBox插入数据获取当前选中 CListCtrl插入数据设置表头修改删除 button 按钮 设置默认按钮按…...

Springboot搭配Redis实现接口限流
目录 介绍 限流的思路 代码示例 必需pom依赖 自定义注解 redis工具类 redis配置类 主拦截器 注册拦截器 介绍 限流的需求出现在许多常见的场景中: 秒杀活动,有人使用软件恶意刷单抢货,需要限流防止机器参与活动 某 api 被各式各样…...

php中的双引号与单引号的基本使用
字符串,在各类编程语言中都是一个非常重要的数据类型 网页当中的图片,文字,特殊符号,HTMl标签,英文等都属于字符串 PHP字符串变量用于存储并处理文本, 在创建字符串之后,我们就可以对它进行操作。我们可以直接在函数中使用字符串,或者把它存储在变量中 字…...

【Neo4j教程之CQL命令基本使用】
🚀 Neo4j 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,C…...

Apikit 自学日记:发起文档测试-TCP/UDP
进入某个TCP/UDP协议的API文档详情页,点击文档上方 测试 标签,即可进入 API 测试页,系统会根据API文档的定义的求头部、Query参数、请求体自动生成测试界面并且填充测试数据。 填写/修改请求参数 1.1设置请求参数 与发起HTTP协议测试类似&am…...

坚鹏:中国邮储银行金融科技前沿技术发展与应用场景第1期培训
中国邮政储蓄银行金融科技前沿技术发展与应用场景第1期培训圆满结束 中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力,是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市,2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点…...

HBase分布式安装配置
首先 先安装zookeeper ZooKeeper配置 解压安装 解压 tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt 改名 mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7 在根目录下创建两个文件夹 mkdir Zlogs mkdir Zdata配置zoo.cfg文件,在解压后的ZooKeep…...

Microsoft365有用吗?2023最新版office有哪些新功能?
office自97版到现在已有20多年,一直是作为行业标准,格式和兼容性好,比较正式,适合商务使用。包含多个组件,除了常用的word、excel、ppt外,还有收发邮件的outlook、管理数据库的access、排版桌面的publisher…...
结构体的定义与实例化
结构体的定义与实例化 在Go语言中,结构体是一种用户自定义的数据类型(复合类型,而非引用类型),可以用来封装多个不同类型的数据成员。结构体的定义和实例化分别如下: 结构体的定义 结构体的定义使用关键…...

canvas详解03-绘制图像和视频
canvas 更有意思的一项特性就是图像操作能力。可以用于动态的图像合成或者作为图形的背景,以及游戏界面(Sprites)等等。浏览器支持的任意格式的外部图片都可以使用,比如 PNG、GIF 或者 JPEG。你甚至可以将同一个页面中其他 canvas 元素生成的图片作为图片源。 引入图像到 …...
VB+ACCESS高校题库管理系统设计与实现
开发数据库题库管理系统主要是为了建立一个统一的题库,并对其用计算机进行管理,使教师出题高效、快捷。 其开发主要包括后台数据库的建立、维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完…...

centos 安装 nginx
1.下载nginx安装包 wget -c https://nginx.org/download/nginx-1.24.0.tar.gz 下载到了当前目录下 2.解压安装包 解压后的结果 3.安装依赖 yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 4. ./configure --prefix/usr/lo…...

TCP/IP详解(一)
TCP/IP协议是Internet互联网最基本的协议,其在一定程度上参考了七层OSI(Open System Interconnect,即开放式系统互联)模型 OSI参考模型是国际组织ISO在1985年发布的网络互联模型,目的是为了让所有公司使用统一的规范来…...
three.js的学习
Threejs 1 前言 Three.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多、使用最广泛的三维引擎。 既然Threejs是一款WebGL三维引擎,那么它可以用来做什么想必你一定很关心。所以接下来内容会展示大量基于…...

Spark
Spark 概述 Apache Spark是用于大规模数据处理的统一分析计算引擎 Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量硬件之上,形成集群。 spark与Hadoop的…...

poi生成excel饼图设置颜色
效果 实现 import com.gideon.entity.ChartPosition; import com.gideon.entity.LineChart; import com.gideon.entity.PieChart; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xddf.usermodel.PresetColo…...

多版本管理node.js
多版本管理node.js 1. 安装2. 配置使用2.1 修改node源2.2 常用命令 在Windows 计算机上管理node.js的多个安装版本。 这是朋友推荐的,就是自己在升级node的时候给搞崩了, 不得不提升效率,于是发现了这个好工具,可以反过来理解&…...

【深入浅出 Spring Security(七)】RememberMe的实现原理详讲
RememberMe 的实现原理 一、RememberMe 的基本使用二、RememberMeAuthenticationFilter 源码分析RememberMeServicesTokenBasedRememberMeServicesTokenBasedRememberMeServices 中对 processAutoLoginCookie 方法的实现总结原理图式 三、提高安全性PersistentTokenBasedRememb…...

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型
Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型 VScode(Visual Studio Code) 安装模型必要插件VScode 预览自定义关节(articulations)动作VScode 导入 GLB 格式模型VScode 导出 GLB 格式模型 模型渲染作为 …...

Python自动化测试框架:Pytest和Unittest的区别
pytest和unittest是Python中常用的两种测试框架,它们都可以用来编写和执行测试用例,但两者在很多方面都有所不同。本文将从不同的角度来论述这些区别,以帮助大家更好地理解pytest和unittest。 1. 原理 pytest是基于Python的assert语句和Pytho…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...