MFC|各控件的使用

news2024/12/23 20:25:41

参考:
MFC学习笔记-4-选项控件Combox的使用(https://dandelioncloud.cn/article/details/1517727978783109122)

文章目录

  • 控件与变量关联
  • 各控件的使用
    • Combo Box
      • 添加
      • 设置默认选项
      • 插入 index从0开始
      • 删除
      • 获取1号索引的具体内容
      • 添加事件
      • 获取当前index
      • 清空
    • Button
      • 设置是否可用是否显示
    • Check Box
      • 获取和设置选中状态
    • Spin Control
      • 结合edit微调int值
      • 结合edit微调double值
    • EditControl
      • 获取设置内容(包括double和CString的相互转换)

控件与变量关联

MFC通过dialog创建完布局后想要在代码里进行修改还需要通过右键控件的Class Wizard…创建关联变量,以combox为例,还可以直接Add Variable…就不举例了,不同方式同样的效果。
在这里插入图片描述
双击IDC_COMBO1
在这里插入图片描述
双击后弹出该窗口添加variable nale点击finish
在这里插入图片描述
再点击上一个窗口的OK,该变量就在对应头文件中创建并关联完成了,后面就可以根据这个变量修改该控件的所有属性值了。
在这里插入图片描述

各控件的使用

目前就是使用到啥写啥,肯定不全面后面可能不断补充有其他需求的可自行百度哈。

Combo Box

添加

添加内容有两种方式

  • 从属性的data里直接添加用分隔符分开

在这里插入图片描述

  • 代码添加利用AddString函数

在这里插入图片描述
可以强转传入char
在这里插入图片描述
可能会出现乱码的情况,此时需要右键该项目属性,修改里面的编码格式为Use Multi-Byte Character Set,就可以显示正常了。
在这里插入图片描述

设置默认选项

插入 index从0开始

删除

获取1号索引的具体内容

	char name[256] = { "哈哈哈" };
	m_combox.AddString(TEXT("one"));
	m_combox.AddString(TEXT("two"));
	m_combox.AddString(TEXT("three"));
	m_combox.AddString((LPCTSTR)name);

	// 设置默认选项
	m_combox.SetCurSel(0);

	// 插入 index从0开始
	m_combox.InsertString(2, TEXT("four"));

	// 删除
	m_combox.DeleteString(0);

	// 获取1号索引的具体内容
	CString std;
	m_combox.GetLBText(1, std);
	MessageBox(std);

添加事件

如下图,添加完名字回车后就会生成对应处理函数,也可以双击控件添加事件。
所有控件都如此,后面不再介绍。
在这里插入图片描述

获取当前index

	// 获取当前index
	int index = m_combox.GetCurSel();

清空

	m_combox.ResetContent();

Button

设置是否可用是否显示

	// 按钮不可用(变灰)  
	m_button.EnableWindow(0);
	// 按钮可用                     
	m_button.EnableWindow(1);
	// 按钮不显示 (消失)  
	m_button.ShowWindow(0);
	// 按钮显示  出现             
	m_button.ShowWindow(1);

Check Box

获取和设置选中状态

	// 获取
	int state = m_check.GetCheack();
	// 设置check box状态
	m_check.SetCheck(0);	// 非选中
	m_check.SetCheck(1);	// 选中

Spin Control

结合edit微调int值

前提设置edit和spin属性值,在默认的基础上设置edit Number属性值为true
在这里插入图片描述
spin的set buddy integer属性值设置为true
在这里插入图片描述
然后在初始化处添加代码

	//数值调节控件初始化
	//设置范围
	m_spin.SetRange32(0, INT_MAX);
	//设置数据的进制
	//m_spin.SetBase(10);
	//设置伙伴控件
	m_spin.SetBuddy(GetDlgItem(IDC_EDIT1));	// edit的ID
	//or 同上作用
	//m_spin.SetBuddy(&spinEdit);	
	//设置默认显示
	m_spin.SetPos(0);

结合edit微调double值

头文件定义double变量,双击spin控件添加OnDeltaposSpin1事件,利用UDN_DELTAPOS属性。
变量定义:
在这里插入图片描述

在这里插入图片描述
OnDeltaposSpin1函数的实现代码如下。

void CMFCLearnDlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
	// TODO: Add your control notification handler code here
	if (!UpdateData(TRUE))
	{
		m_dNum = 0;
		UpdateData(FALSE);
		return;
	}
	if (pNMUpDown->iDelta == -1)  // 如果此值为-1 , 说明点击了Spin的往上箭头
	{
		m_dNum = m_dNum + 0.1;
	}
	else if (pNMUpDown->iDelta == 1)  // 如果此值为, 说明点击了Spin的往下箭头
	{
		m_dNum = m_dNum - 0.1;
	}
	if (m_dNum > INT_MAX || m_dNum < 0)
	{
		UpdateData(TRUE);
	}
	UpdateData(FALSE);
	*pResult = 0;
}

EditControl

获取设置内容(包括double和CString的相互转换)

// 获取值
CString width_value;
widthEdit.GetWindowTextA(width_value);
unsigned long long value = atof(width_value);

// 设置值 value为double值 widthEdit为对应edit控件
CString widthValue;
widthValue.Format(_T("%d"), value);
widthEdit.SetWindowTextA(widthValue);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端学习--async

文章目录async函数await使用await等待Promise异步函数await等待普通函数什么时候使用async/awaitasync也是用于异步任务的&#xff0c;可以说是异步任务处理的另一种方式async函数 async修饰函数&#xff0c;表示这个函数中可以处理异步函数 async修饰的函数&#xff0c;会返…

每天10个前端小知识 【Day 3】

前端面试基础知识题 1. 使用js生成1-10000的数组 实现的方法很多&#xff0c;除了使用循环&#xff08;for,while,forEach等&#xff09;外&#xff0c;最简单的是使用Array.from //方法一&#xff1a; Array.from(new Array(10001).keys()).slice(1) //方法二&#xff1a;…

基于paddlex图像分类模型训练(二):训练自己的分类模型、熟悉官方demo

0. 前言 相关系列博文&#xff1a;基于paddlex图像分类模型训练&#xff08;一&#xff09;&#xff1a;图像分类数据集切分&#xff1a;文件夹转化为imagenet训练格式 代码在线运行&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/5440569 1. 官方demo&a…

spring框架之注解开发

Spring是轻代码而重配置的框架&#xff0c;配置比较繁重&#xff0c;影响开发效率&#xff0c;所以注解开发是一种趋势。 让我们来看看注解开发之前是如何定义bean的&#xff1f; ① BrandDemo.java ② applicationContext.xml ③Test.java 一、注解开发定义bean 组件扫描 二…

信用卡APP评测系列——工银e生活5.0打造个人生活服务平台,引领用户美好生活

易观&#xff1a;中国信用卡市场规模增速趋稳&#xff0c;线上成为存量用户经营主阵地&#xff0c; APP用户高质量经营成为新发力点&#xff0c;也是业务良性增长保障&#xff0c;对此&#xff0c;银行机构着力用户体验竞相升级信用卡APP。工商银行顺势升级工银e生活APP5.0版&a…

第二章.神经网络—3层神经网络的实现,输出层设计

第二章.神经网络 2.3 三层神经网络的实现 1.各层间信号传递的实现 1).示意图&#xff1a; 2).公式&#xff1a; ①.用数学式表示a1(1)&#xff1a; ②.用矩阵表示第一层的加权和&#xff1a; 3).实现&#xff1a; import numpy as np# 3层神经网络的实现# 参数初始化 def i…

华数杯B题——校任务尝试

一、背景说明 根据影响社会稳定的因素&#xff0c;以及颜色革命&#xff0c;来衡量社会稳定性&#xff0c;判断社会风险 社会预警指标体系是由一系列经过理论遴选的敏感指标组成的一种测量社会危机现象及其运行过程的指标系统&#xff0c;它作为一种特定的测量工具和手段&…

Java设计模式--原型模式

概念&#xff1a;用原型实例&#xff08;最初的&#xff09;指定创建对象的种类&#xff0c;并且通过拷贝这些原型&#xff0c;创建新的对象。&#xff08;自我复制能力&#xff09;1.类图原理类图分析Prototype&#xff1a;原型类&#xff0c;声明一个克隆自己的接口ConcreteP…

Go编程规范和性能调优(三)——规范编码和性能优化

文章目录一、本次学习重点内容&#xff1a;二、详细知识点介绍&#xff1a;1、高质量编程简介什么是高质量&#xff1f;编程原则&#xff1a;2、编码规范注释&#xff1a;代码格式&#xff1a;命名规范变量&#xff1a;函数&#xff1a;package&#xff1a;错误和异常处理&…

关于yolov8的训练的一些改动

1、YOLOv8创新改进点&#xff1a; 1.1.Backbone 使用的依旧是CSP的思想&#xff0c;不过YOLOv5中的C3模块被替换成了C2f模块&#xff0c;实现了进一步的轻量化&#xff0c;同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块&#xff1b; 1.2.PAN-FPN 毫无疑问YOLOv8依旧使…

大文件传输软件的优势有哪些?-镭速传输

互联网时代&#xff0c;大数据传输是企业面临的必不可免的问题&#xff0c;可以选择传统的FTP、网盘等方式来传输&#xff0c;对于小型文件或许是有优势的&#xff1b;但是对于大型文件数据的话&#xff0c;也许会出现传输速度慢&#xff0c;数据不可靠的情况&#xff0c;极大的…

python3+requests+unittest:接口自动化测试(一)

简单介绍框架的实现逻辑&#xff0c;参考代码的git地址&#xff1a; GitHub - zhangying123456/python_unittest_interface: pythonunittest接口自动化测试脚本 1.环境准备 python3 pycharm编辑器 2.框架目录展示 &#xff08;该套代码只是简单入门&#xff0c;有兴趣的可…

Nginx——Keepalived的原理与配置

摘要 Keepalived的作用是检测服务器的状态&#xff0c;如果有一台web服务器宕机&#xff0c;或工作出现故障&#xff0c;Keepalived将检测到&#xff0c;并将有故障的服务器从系统中剔除&#xff0c; 同时使用其他服务器代替该服务器的工作&#xff0c;当服务器工作正常后Keep…

python求解带约束的优化问题

带约束的优化问题可被定义为&#xff1a; 在python中&#xff0c;可以使用scipy的optimize包进行求解&#xff0c;具体求解函数为linprog&#xff0c;下面举例说明求解方法&#xff1a; 假设问题被定义为&#xff1a; 首先&#xff0c;求解最大值问题&#xff0c;我们可以通…

Spring Security 源码解读 :认证总览

Spring Security 提供如下几种认证机制&#xff1a; Username & PasswordOAuth2.0 LoginSAML 2.0 LoginRemember MeJAAS AuthenticationPre-authentication ScenariosX509 Authentication 这里使用Spring Boot 2.7.4版本&#xff0c;对应Spring Security 5.7.3版本 Serv…

LeetCode题目笔记——1588. 所有奇数长度子数组的和

文章目录题目描述题目难度——简单方法一&#xff1a;暴力代码/C代码/Python方法二&#xff1a;前缀和代码/C代码/Python总结题目描述 给你一个正整数数组 arr &#xff0c;请你计算所有可能的奇数长度子数组的和。 子数组 定义为原数组中的一个连续子序列。 请你返回 arr 中…

MySql性能优化(六)索引监控

文章目录索引监控Handler_read_firstHandler_read_keyHandler_read_lastHandler_read_nextHandler_read_prevHandler_read_rndHandler_read_rnd_next索引监控 SHOW STATUS LIKE Handler_read%解释一下各个参数的含义 Handler_read_first 通过index获取数据的次数 Handler_r…

在cmd中遍历局域网内的IP命令解析

简单的方法 1&#xff0c;直接通过浏览器访问路由器&#xff0c;通过路由器的页面查看。2&#xff0c;网络中很多扫描网络的软件&#xff0c;3&#xff0c;自己使用cmd命令查看 有时候自己也觉得&#xff0c;有简单的方式还用这麻烦的干嘛。但遇到不知道路由的登录密码呢&…

Djiango零基础-快速了解基本框架笔记-附案例

初识Djiango 1. 安装djiango pip install django4.1 -i https://mirrors.aliyun.com/pypi/simple/C:\python38- python.exe- Scripts- pip.exe- djiango-admin.exe 【工具&#xff0c;创建djiango项目】- Lib- 内置模块- site-packages- openpyxl- python-docx- flask- djia…

IPV6实验(2.3)

目标&#xff1a; 一、首先将r2、r3、r4这个公网先弄通 [r2]int gi 0/0/0 [r2-GigabitEthernet0/0/0]ip add 23.1.1.1 24 [r3]int gi 0/0/0 [r3-GigabitEthernet0/0/0]ip add 23.1.1.2 24 [r3-GigabitEthernet0/0/0]int gi 0/0/1 [r3-GigabitEthernet0/0/1]ip add 34.1.1.1 2…