自用MFC知识点记录

本文分享了MFC编程中的一些实用技巧,包括控件文本操作、CheckBox处理、Edit文本框设置、控件禁用、进制转换、文件读写、自定义消息及定时器设置等,适合初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


第一次做MFC软件,用到的相关知识记录。


1.控件文本:

CString str;

GetDlgItemText(IDC_XXX,str); //获得控件文本

SetDlgItemText(IDC_XXX,str); //设置控件文本


另外还能通过设置控件变量来获得文本值:

UpdateData(TRUE) //从控件获取值

m_Edit1 = 0; //初始化m_Edit1 ,默认会调用UpdateData(FALSE),将m_Edit1 值传递给控件显示。赋值后需手动调用该函数。

另外还有其他多种方法操作文本,未使用过暂不记录。


2.Check Box

m_Check1 = GetDlgItem(IDC_CHECK_XXX)->GetCheck(); //m_Check1 为选框变量,为尝试值是否会直接变化而不需调用函数赋值。

GetDlgItem(IDC_CHECK_XXX)->SetCheck(0);


3.Edit文本框

Edit可在属性窗口设置多行,自动换行,垂直、水平滚动条。

m_Edit.LineScroll(m_Edit.GetLineCount()); //设置垂直滚动总是显示在最下一行,未尝试水平滚动条如何设置最右


4.禁用控件(显示为灰色)

GetDlgItem(IDC_XXX)->EnableWindow(FALSE); //解禁为TRUE


5.进制转换

str.Format(L"%C",buf[i]) //将十六进制转为char类型(ASCII码) 0X30 -> '0'

str.Format(L"%02x",buf[i]) //将十六进制保存为CString类型(ASCII码) 0Xaa -> 'aa'

char ch = (char)85 //十进制转字符

char ch = (char)0x55 //十六进制转字符

保存为TXT文件需写入ASCII码,如‘0’需以0x30写入才会在TXT中显示为0,否则将以ASCII码表中的0保存,显示乱码

从文本框获得文本内容再保存如TXT中长度需为2倍,估计是因为类型所占字节数不同造成,未深究。

6.文件读写

这次使用的是MFC的API函数,C和C++有其他的文件操作函数。

CFILE file.Open(path, mode);

file.Write(str, str.GetLength());

file.Close();


7.MFC的自定义消息

(1)定义消息:

#define WM_MYMESG WM_USER + n

(2)在头文件声明消息响应函数

afx_msg void OnMyMesg()

(3)添加映射 //XX默认为工程名

BEGIN_MESSAGE_MAP(CXXDlg, CDialogEx)
ON_WM_MYMESG(WM_MYMESG, &CXXDlg::OnMyMesg())
END_MESSAGE_MAP()

(4)在源文件中实现响应函数


8.定时器OnTimer需添加

BEGIN_MESSAGE_MAP(CXXDlg, CDialogEx)
ON_WM_TIMER()
END_MESSAGE_MAP()

否则OnTimer函数无法响应SetTimer函数


9.strlen()

strlen计算一个指针所指向的数组长度时,遇到数组元素为0返回,即认为到了尾端,不再计算后续是否还存在元素。

不知道该如何解决这一问题,目前设想是传过来的数据某一位中包含所传数据长度,可以手动读取该长度来解决。


目前想到的就这些,之后再继续补充遇到的其他问题。关于串口的简单使用之后单独再写一篇保存。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值