MessageBox失去焦点,鼠标失去响应,但是键盘可以移动,请问有没有人遇到过这种情况?

时间:2022-10-16 20:57:35
大家有没有试过发生这种情况,就是在程序的主对话框里面Create一个非模态对话框,然后单击这个非模态对话框的退出按钮时弹出一个MessageBox提示用户是否退出系统,但是不知道为什么有时候会出现弹出MessageBox后鼠标会失去响应,击哪里都不起作用,而按动左右方向键却可以在MessageBox的是和否按钮之间来回移动,这是什么原因引起的呢?

8 个解决方案

#1


顶下

#2


“有时候”这样的问题很难查。
建议楼主先测试找到这个现象发生的根本操作流程。
然后再定位这个问题。

#3


关注.

#4


怀疑lz在MessageBox之前做了相关操作,是鼠标失效。
貌似MessageBox只有4个参数,句柄、内容、标题和类型,与lz所提有没有关系,
如果要,第一个句柄比较可以,不过一般都设为NULL。
lz看看前后的代码吧

HWND hWnd , //句柄
LPCWSTR lpText, //内容
LPCWSTR lpCaption, //标题
UINT uType //类型

#5


怀疑lz在MessageBox之前做了相关操作,使鼠标失效。 
貌似MessageBox只有4个参数,句柄、内容、标题和类型,与lz所提都没有关系, 
如果有,第一个参数HWND hWnd句柄,比较可疑,不过一般该参数都设为NULL。 
lz看看前后的代码吧 

#6


好像以前问过吧,还没解决吗?
贴代码

#7


你理解有问题。
首先你创建了一个Create的非模态对话框,单击“退出”后弹出MessageBox对话框,这个对话框就是一个模态对话框。它阻了你的第一个对话框,直到你按“是”或“否”后控制权才会返回你的第一个对话框,所以此时你看到的你的第一个对话框是没有焦点的,如果你单击你的第一个对话框焦点会切换到你的第二个对话框,而不是第一个,这就是模态对话框。

不知道这样说楼主明白否!

#8


引用楼主 zym_123456 的帖子:
大家有没有试过发生这种情况,就是在程序的主对话框里面Create一个非模态对话框,然后单击这个非模态对话框的退出按钮时弹出一个MessageBox提示用户是否退出系统,但是不知道为什么有时候会出现弹出MessageBox后鼠标会失去响应,击哪里都不起作用,而按动左右方向键却可以在MessageBox的是和否按钮之间来回移动,这是什么原因引起的呢?


你是不是hook了键盘? 然后在 callback里面Messagebox了? 这样的函数阻塞住的话, 大概就会这样

#1


顶下

#2


“有时候”这样的问题很难查。
建议楼主先测试找到这个现象发生的根本操作流程。
然后再定位这个问题。

#3


关注.

#4


怀疑lz在MessageBox之前做了相关操作,是鼠标失效。
貌似MessageBox只有4个参数,句柄、内容、标题和类型,与lz所提有没有关系,
如果要,第一个句柄比较可以,不过一般都设为NULL。
lz看看前后的代码吧

HWND hWnd , //句柄
LPCWSTR lpText, //内容
LPCWSTR lpCaption, //标题
UINT uType //类型

#5


怀疑lz在MessageBox之前做了相关操作,使鼠标失效。 
貌似MessageBox只有4个参数,句柄、内容、标题和类型,与lz所提都没有关系, 
如果有,第一个参数HWND hWnd句柄,比较可疑,不过一般该参数都设为NULL。 
lz看看前后的代码吧 

#6


好像以前问过吧,还没解决吗?
贴代码

#7


你理解有问题。
首先你创建了一个Create的非模态对话框,单击“退出”后弹出MessageBox对话框,这个对话框就是一个模态对话框。它阻了你的第一个对话框,直到你按“是”或“否”后控制权才会返回你的第一个对话框,所以此时你看到的你的第一个对话框是没有焦点的,如果你单击你的第一个对话框焦点会切换到你的第二个对话框,而不是第一个,这就是模态对话框。

不知道这样说楼主明白否!

#8


引用楼主 zym_123456 的帖子:
大家有没有试过发生这种情况,就是在程序的主对话框里面Create一个非模态对话框,然后单击这个非模态对话框的退出按钮时弹出一个MessageBox提示用户是否退出系统,但是不知道为什么有时候会出现弹出MessageBox后鼠标会失去响应,击哪里都不起作用,而按动左右方向键却可以在MessageBox的是和否按钮之间来回移动,这是什么原因引起的呢?


你是不是hook了键盘? 然后在 callback里面Messagebox了? 这样的函数阻塞住的话, 大概就会这样