0

我有一个MFC申请表如图:

零件方向

我想知道为什么鼠标滚轮在“基本角度:”字段(用于控制旋转控制)上工作,而不是在“角度”和“范围”字段上工作。直接单击旋转按钮效果很好。

嵌套表单的“底角”和“±”字段也是如此:

嵌套

我的假设:发生这种情况是因为字段位于组框内

我做了什么来测试它:我更改了 teo froms 中的组框尺寸,以使非工作字段不与它重叠:

零件方向已修改

嵌套修改

结果:鼠标滚轮开始作用于 Part Orientation 对话框的控件。但是在嵌套对话框中它继续拒绝工作。

注意:文本框是 CEdits。他们使用 CString 变量进行 DDX。零件方向是一个模态对话框。嵌套是 CMFCTabControl 内部、CDialogBar 内部、CDockablePane 内部、CMainFrame 内部的一种形式(这个是从 CFrameWndEx 派生的)

现在,我的怀疑:对于窗体部件方向对话框,我怀疑 groupbox 正在吃鼠标滚轮事件。对于嵌套对话框,我怀疑 DockablePane 正在吃鼠标滚轮事件。或者可能是由我设计的窗格布局创建的隐式 CTabbed 窗格;甚至是 MainFrame。

我的问题是:如何使鼠标滚轮在组框内的旋转按钮控制的文本框上工作?我的应用程序对话框中有更多这样的案例。

有没有一种方法可以让谁来处理鼠标滚轮的移动?同样的问题适用于嵌套表单控件已删除哪个组框区域并且鼠标滚轮继续不使旋转按钮移动!

在此先感谢,塞尔吉奥

4

1 回答 1

0

第一步是禁用我这里有的一个叫做 WizMouse 的小软件。鼠标滚轮立即在零件方向对话框的微调器控制文本框中工作。

为了让其他人工作,我不得不改变微调器 RC 定义

UDS_ARROWKEYS

UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK

这使得鼠标滚轮移动了,但是以不希望的方式移动:它是步进一个单位,向上移动是递减,并且它的上限是100!

为什么?因为,我有一个处理 UDN_DELTAPOS 的函数来操纵微调器的偏移量。它定义将值步进为增量为 5.0 的双精度值。直接单击两个微调器按钮时也会发生这种情况!

在该函数中,我所要做的就是将 *pResult 设置为 1 而不是 0。

现在一切正常:)

谢谢,再来一次。

于 2013-04-05T13:57:09.783 回答