MFC中EDIT控件的响应问题

nh1396555275 2018-08-25 09:01:03
做了个界面:

螺杆半径关联了一个变量m_doL,半斤设在0.5到2之间。

螺杆变量的空间直接点进去生成个响应函数,在这个响应函数里检测m_doL的范围是否合格。

问题在于我想输入0.9,可是键盘敲下0,就直接进到响应函数里,跳出对话框提示不在0.5和2之间。

我要怎么改才能成功输入0.9呢
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nh1396555275 2018-08-26
  • 打赏
  • 举报
回复
引用 2 楼 l357630798 的回复:
继承CEdit控件自绘?不是自绘控件应该不会出现这个问题。
建议打个断点看下,看起来像是处理键盘消息出问题了。如果是自绘,也有可能是没处理好重绘。

谢谢哥们,已经解决了
l357630798 2018-08-25
  • 打赏
  • 举报
回复
继承CEdit控件自绘?不是自绘控件应该不会出现这个问题。
建议打个断点看下,看起来像是处理键盘消息出问题了。如果是自绘,也有可能是没处理好重绘。
nh1396555275 2018-08-25
  • 打赏
  • 举报
回复
搜狗输入法有几个同音错别字,见谅
第3章 Visual C++ 2010 MFC菜单编程 103 3.1 菜单编程 103 3.1.1 创建菜单 104 3.1.2 创建菜单热键 115 3.1.3 标记菜单 115 3.1.4 给菜单加入图标 119 3.1.5 禁用菜单 121 3.1.6 移除与加载菜单 127 3.2 菜单消息的传输机制 129 3.2.1 菜单消息的分类 129 3.2.2 菜单消息的传输路由 129 3.3 动态菜单操作 131 3.3.1 添加菜单 131 3.3.2 插入菜单 133 3.3.3 删除菜单 135 3.3.4 插入菜单的命令响应 136 3.3.5 修改菜单 137 3.4 小结 140 第4章 Visual C++ 2010 MFC对话框 第4章 编程 141 4.1 对话框简介 141 4.1.1 对话框的控件简介 141 4.1.2 对话框的种类简介 149 4.1.3 设计对话框 150 4.2 创建与销毁对话框 153 4.2.1 模态对话框 153 4.2.2 非模式对话框 159 4.2.3 属性页对话框 163 4.3 消息对话框 173 4.4 通用对话框 175 4.4.1 文件打开对话框 176 4.4.2 文件保存对话框 178 4.4.3 颜色对话框 179 4.4.4 字体对话框 181 4.4.5 查找对话框 183 4.4.6 页面设置对话框 185 4.4.7 打印对话框 186 4.5 小结 187 第5章 Visual C++ 2010 MFC对话框 第5章 控件 188 5.1 Visual C++ 2010 Button控件 5.1 简介与开发 191 5.2 Visual C++ 2010 List Box 控件 5.2 简介与开发 193 5.3 Visual C++ 2010 Com boBox 5.3 控件简介与开发 195 5.3.1 创建扩展组合框控件 196 5.3.2 在扩展组合框控件使用 5.3.2 图像列表 197 5.3.3 设置各项的图像 197 5.3.4 处理扩展组合框控件的 5.3.4 通知消息 198 5.4 Visual C++ 2010 List控件简介与 5.4 开发 198 5.4.1 列表控件和列表视图 199 5.4.2 列表项和图像列表 199 5.4.3 回调项和回调屏蔽 200 5.4.4 创建列表控件 200 5.4.5 创建图像列表 201 5.4.6 向控件添加列(报表视图) 204 5.4.7 向控件添加项 205 5.4.8 在列表控件滚动、排列、 5.4.8 排序和查找 205 5.4.9 在列表控件实现工作区 205 5.4.10 处理列表控件的通知 5.4.10 消息 206 5.4.11 更改列表控件样式 206 5.4.12 虚拟列表控件 207 5.4.13 列表控件的消息映射 209 5.4.14 列表控件的风格选项及表头 5.4.14 设置 210 5.4.15 销毁列表控件 210 5.5 Visual C++ 2010 Edit控件简介与 5.5 开发 211 5.6 Visual C++ 2010 Rich Edit控件 5.6 简介与开发 213 5.6.1 Rich Edit控件的字符格式 215 5.6.2 Rich Edit控件的段落格式 215 5.6.3 Rich Edit控件的当前选定 5.6.3 内容 215 5.6.4 Rich Edit控件的分词 216 5.6.5 Rich Edit控件的剪贴板 5.6.5 操作 216 5.6.6 Rich Edit控件的流操作 216 5.6.7 Rich Edit控件的打印 5.6.7 操作 216 5.6.8 无底的Rich Edit控件 217 5.6.9 来自Rich Edit控件的通知 217 5.7 Visual C++ 2010 Progress控件 5.7 简介与开发 219 5.7.1 进度控件的样式 219 5.7.2 进度控件的设置 219 5.7.3 操作进度控件 220 5.8 Visual C++ 2010 Tree控件简介与 5.8 开发 220 5.8.1 树控件样式 221 5.8.2 树控件父项和子项 221 5.8.3 树控件项位置 222 5.8.4 树控件项标签 222 5.8.5 树控件标签编辑 223 5.8.6 树控件项的状态 223 5.8.7 树控件图像列表
No.4 简单的MFC多对话框演示程序 “MultiDialog” 演示如何在工程拥有多个对话框,及如何在一个对话框调用另一个对话框。 重点:1、多个对话框类的建立;2、对话框的模式(Modal)调用方法;3、Spin控件的使用。 新建一个基于对话框的MFC工程, 通过菜单"Insert>>Resource"打开添加资源对话框, 在其选择Dialog后点击New创建一个新的对话框 按Ctrl+W打开ClassWizard,系统会提示刚才创建了一个新的对话框资源,是否建立对应的类, 选择建立,然后在New Class窗口Class Name栏输入它的名称:CSubClass1, 确定后系统会自动生成SubClass1.h和SubClass1.cpp并加入工程,其有已经创建好的CSubClass1的类的基本代码。 把这个对话框的Caption属性改为“难度选择”,在它上面画三个Radio“简单”、“标准”、“困难”, 并建立相关联的变量m_Option1。(要注意的是在ClassWizard注意Class Name应该选CSubClass1而不是之前的主对话框类) 按照相同方法建立第二个新对话框,类名“CSubClass2”,Caption为“关卡选择”。 在上面画一个Edit和一个Spin,注意先画Edit后画Spin,将Spin的Auto buddy和Set buddy integer勾上。 按Ctrl+W打开ClassWizard,为Edit建立关联变量,不过注意是int型而不是CString型, 也为Spin建立关联变量m_Spin1,注意这次是Control型变量CSpinButtonCtrl。 下面为这两个对话框添加代码。 双击“难度选择”对话框的OK按钮,建立对话框的OnOK映射。 在其加入(在CDialog::OnOK();之前): UpdateData(TRUE); if ((m_Option1>2) ||(m_Option1<0)) { MessageBox("错误的选择!","提示",MB_OK); return; } 下面对“关卡选择”对话框添加初始化代码, 由于关卡的有效值只有1到6,因此需要在初始化时设置Spin控件的有效值范围。 按Ctrl+W打开ClassWizard,在左侧列表选择这个对话框类CSubDialog2, 在右侧列表选择WM_INITDIALOG,点击右边的“Add Function...”按钮, 接着点击右边的“Edit Code”按钮,在其加入(在CDialog::OnInitDialog()那句之后,在return TRUE那句之前): m_Spin1.SetRange(1,6); m_Text1=1; m_Spin1.SetPos(1); 其CSpinButtonCtrl::SetRange()函数的作用是设置和他关联的Spin控件的范围,两个参数分别是下界和上界。 而CSpinButtonCtrl::SetPos()是设定Spin的当前位置。 两个新的对话框都已建立完毕,下来是如何在主对话框使用的问题。 首先,两个新对话框都有各自的类,分别在SubDialog1.h和SubDialog2.h有定义。(类的细节则在对应的cpp定义) 因此,主对话框想要调用这两个新对话框,需要先包含这两个头文件, 在你要使用的地方(本例是MultiDialogDlg.cpp)文件前面加上 #include "SubDialog1.h" #include "SubDialog2.h" 然后在想要调用的地方就可以使用了。 本例,首先为主窗口的两个Edit建立CString型关联变量m_Text1和m_Text2, 然后在两个按钮的消息映射函数分别加入: CSubDialog1 dialog1; //定义CSubDialog1型对话框的一个新对象 dialog1.DoModal(); //使用“模式”调用,显示对话框 m_Text1.Format("%d",dialog1.m_Option1); //此句在上面对话框没有关闭前不会执行到 UpdateData(FALSE); 和 CSubDialog2 dialog1; dialog1.DoModal(); m_Text2.Format("%d",dialog1.m_Text1); UpdateData(FALSE); 其第一句均为定义对话框新实例的语句,定义一个你想要的类型的对话框。 第二句是通过调用CDialog::DoModal()方法,来显示这个对话框,并进入“模式”(Modal)状态 在“模式”状态,当子对话框没有关闭之前,调用它的父对话框不能被响应, 并且其语句执行会停留在刚才的DoModal语句上等待,直到子对话框关闭才接着执行下一个语句。 第三第四句将子对话框得到的数据(即类的成员变量)显示在父对话框的Edit上。 四句执行完后退出该函数,这时刚才定义的CSubDialog1等对话框类变量被销毁,因此创建的话框也被销毁。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧