MFC Windows 应用程序中的选项卡不可单击
我有一个关于双显示器系统中的 MFC Windows 应用程序的奇怪问题。 假设我有显示器 A 和显示器 B。 如果我的窗口工具栏(开始菜单等)位于监视器 A 中,并且 A 也是我的主监视器。我的应用程序运行良好。但是,如果 A 有工具栏,而 B 是主监视器。当我将应用程序移动到窗口 A 时,该选项卡不可单击,而其他控件(按钮..)可以工作。 我不知道发生了什么事。任何建议表示赞赏..
I have a strange problem about a MFC windows application in dual monitor system.
Let's say I have monitor A and monitor B.
If my window toolbar (start menu etc) is in monitor A and A is alsom my primary monitor. My application works fine. However, if A has toolbar while B is the primary monitor. When I move my application to window A, the tab is not clickable while other controls (buttons..)work.
I have no clue what's going on. Any suggesttions are appreciated..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后我找到了问题所在。为了获取选项卡索引,代码使用最后一条消息位置来获取单击点,并使用 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 后,它起作用了!
Finally I figured out the problem. To get the tab index, the code use last message position to get the click point and use HitTest to figure out which tab is clicked. In the multiple monitor system, we should not use LOWORD and HIWORD as described below:
"Important Do not use the LOWORD or HIWORD macros to extract the x- and y- coordinates of the cursor position because these macros return incorrect results on systems with multiple monitors. Systems with multiple monitors can have negative x- and y- coordinates, and LOWORD and HIWORD treat the coordinates as unsigned quantities."
http://msdn.microsoft.com/en-us/library/ms644938(v=vs.85).aspx
After I use the GET_X_LPARAM or GET_Y_LPARAM it works!