MFC EditCtrl关联整型变量

在MFC对话框中,通过设置EditCtrl属性为number并编写失去焦点响应函数,实现仅允许输入10-100的整数。使用SetDlgItemInt和GetDlgItemInt进行整型数据的输入输出。
摘要由CSDN通过智能技术生成

今天遇到一个EditCtrl问题。要求在MFC对话框上添加一个EditCtrl控件,此控件只能输入10-100之间的整型数。

实现:

1、将EditCtrl的属性中的 外观->number设为True,这时控件只能输入0-9这10个字符。


2、在对话框对应的类中添加一个整型变量m_iNumber,并在构造函数中初始化为0.

3、为控件添加失去焦点时的响应函数:

void CMfcTestDlg::OnEnKillfocusEditNumber()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_iNumber = GetDlgItemInt(IDC_EDIT_NUMBER);
if (m_iNumber >100 || m_iNumber <10)
{
AfxMessageBox("Please input a number between 10-100");
GetDlgItem(IDC_EDIT_NUMBER)->SetFocus();
}

}


4、如果需要把数值显示在控件上,则可以使用如下代码:

m_iNumber = 123
要让文件的机器码显示在 MFC 的 CEdit 控件上,可以按照以下步骤进行: 1. 创建一个 CEdit 对象,并将它添加到对话框或窗口中。 2. 打开文件,并读取文件的内容到一个缓冲区中。 3. 将缓冲区中的内容转换成机器码,并将机器码字符串显示在 CEdit 控件中。 下面是一个示例代码: ```cpp void CMyDlg::OnBtnOpenFile() { CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("All Files (*.*)|*.*||")); if (dlg.DoModal() == IDOK) { CString strFilePath = dlg.GetPathName(); HANDLE hFile = CreateFile(strFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize = GetFileSize(hFile, NULL); BYTE* buf = new BYTE[dwFileSize]; DWORD dwRead; if (ReadFile(hFile, buf, dwFileSize, &dwRead, NULL)) { CString strHex; for (DWORD i = 0; i < dwFileSize; i++) { CString strByte; strByte.Format(_T("%02X "), buf[i]); strHex += strByte; if ((i + 1) % 16 == 0) { strHex += _T("\r\n"); } } m_editCtrl.SetWindowText(strHex); } delete[] buf; CloseHandle(hFile); } } } ``` 这个示例代码中,我们通过 CFileDialog 对话框让用户选择一个文件,然后打开文件并读取文件的内容到一个缓冲区中。接着,我们将缓冲区中的内容转换成机器码字符串,并将字符串显示在 CEdit 控件中。 需要注意的是,这里将每个字节转换成两个十六进制数,用空格隔开。每输出 16 个字节后换行。这样可以保证机器码显示的格式清晰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值