我有一个MFC申请表格如图:
我想知道为什么鼠标滚轮在“Base angle:”字段上工作(用于控制旋转控制),而不是在“Angle”和“Range”字段上。直接点击旋转按钮就完美了。
嵌套形式的“基本角度”和“±”字段也是如此:
我的假设:它正在发生,因为这些字段在一个组框内
我做了什么来测试它:我改变了teo froms中的groupbox维度,其方式是非工作字段不重叠:
结果:鼠标滚轮开始在“部件方向”对话框的控件上工作。但在Nesting对话框中,它继续拒绝工作。
注意: 文本框是CEdits。他们用CString变量DDX。 部件方向是模态对话框。 嵌套是一个CMFCTabControl里面的一个表单,在CDialogBar里面,在一个CDockablePane里面,在CMainFrame里面(这个来自CFrameWndEx)
现在,我的嫌疑人: 对于表单部分方向对话框,我怀疑组框正在吃鼠标滚轮事件。 对于嵌套对话框,我怀疑DockablePane正在吃鼠标滚轮事件。或者也许是一个隐含的CTabbed窗格,由我设计的窗格布局创建;甚至是MainFrame。
我的问题是:如何让鼠标滚轮在群组内的旋转按钮控制文本框上工作?我的应用程序对话框中有更多此类案例。
有没有办法可以让谁应该处理鼠标滚轮运动?同样的问题适用于嵌套表单控件已删除哪个组框区域并且鼠标滚轮继续不会使旋钮移动!
提前致谢, 塞尔吉奥
答案 0 :(得分:0)
第一步是禁用我在这里称为WizMouse的小软件。 鼠标滚轮立即在零件方向对话框的旋转器控制文本框中工作。
要使其他人工作,我必须从
更改微调器RC定义UDS_ARROWKEYS
到
UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK
这使得鼠标滚轮移动,但是以不期望的方式移动:它踩着一个单元,向上移动是递减的,它的上限为100!
为什么呢?因为,我有一个处理UDN_DELTAPOS的函数来操纵微调器的偏移量。它定义将值作为具有delta值5.0的double处理。当直接点击两个微调按钮时,也会发生这种情况!
在该功能中,我所要做的就是将* pResult设置为1而不是0。
现在一切正常:)
再次感谢。