参考:
 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);



















