在模式对话框窗口出现后,按钮丢失了WM_LBUTTONUP

liu*_*gbo 2 windows winapi

我有一个win32应用程序,主窗口上有一个按钮.

当我单击鼠标左键时,我收到WM_LBUTTONDOWN消息,当我释放鼠标左键时,我收到WM_LBUTTONUP消息,这是正常的.

但是,如果在处理消息WM_LBUTTONDOWN时,(当我按住鼠标左键时),程序会显示一个模态对话窗口,该按钮将永远不会收到WM_LBUTTONUP.

这成为一个问题,因为在WM_LBUTTONDOWN中,程序执行了一些需要在WM_LBUTTONUP中清除的内容.现在由于模态对话框,没有机会再清理了.

有没有更好的方法来处理这个?我试过SetCapture,似乎仍然无法接收WM_LBUTTONUP.

Dav*_*nan 5

这很合理.当您显示模态对话框时,它会启动自己的模态消息循环.所以它会收到WM_LBUTTONUP消息.

你遇到的根本问题是你正在显示模态对话框WM_LBUTTONDOWN,实际上你应该在响应中显示它WM_LBUTTONUP.尝试按下其他应用程序中的按钮,并注意只有当按钮按下时才会执行操作.您应该这样做并遵循平台标准.