【发布时间】:2011-04-12 04:14:17
【问题描述】:
我对双显示器系统中的 MFC windows 应用程序有一个奇怪的问题。 假设我有监视器 A 和监视器 B。 如果我的窗口工具栏(开始菜单等)在监视器 A 中,并且 A 也是我的主监视器。我的应用程序运行良好。但是,如果 A 有工具栏,而 B 是主监视器。当我将应用程序移动到窗口 A 时,该选项卡不可点击,而其他控件(按钮..)工作。 我不知道发生了什么事。任何建议表示赞赏..
【问题讨论】:
标签: mfc
我对双显示器系统中的 MFC windows 应用程序有一个奇怪的问题。 假设我有监视器 A 和监视器 B。 如果我的窗口工具栏(开始菜单等)在监视器 A 中,并且 A 也是我的主监视器。我的应用程序运行良好。但是,如果 A 有工具栏,而 B 是主监视器。当我将应用程序移动到窗口 A 时,该选项卡不可点击,而其他控件(按钮..)工作。 我不知道发生了什么事。任何建议表示赞赏..
【问题讨论】:
标签: mfc
我终于找到了问题所在。要获取选项卡索引,代码使用最后一条消息位置来获取单击点,并使用 HitTest 来确定单击了哪个选项卡。在多显示器系统中,我们不应该使用 LOWORD 和 HIWORD,如下所述:
“重要不要使用 LOWORD 或 HIWORD 宏来提取光标位置的 x 和 y 坐标,因为这些宏在具有多个监视器的系统上返回不正确的结果。具有多个监视器的系统可能具有负的 x 和 y-坐标,而 LOWORD 和 HIWORD 将坐标视为无符号量。”
http://msdn.microsoft.com/en-us/library/ms644938(v=vs.85).aspx
在我使用 GET_X_LPARAM 或 GET_Y_LPARAM 之后,它就可以工作了!
【讨论】: