我写一个WIN32程序,用DialogBoxParam生成一个新的弹出对话框后,捕获该对话框的WM_KEYDONW消息时,
case WM_KEYDOWN:
MessageBox(hwnd, "test", "倒", MB_OK); //必须加上这句 WM_CHAR中才能捕获到字符,我倒??
switch ((int) wParam)
{
case VK_RETURN://当按下回车,捕获不到回车,怪??
.....
}
...
case WM_CHAR:
....
case WM_KEYDOWN:
MessageBox(hwnd, "test", "倒", MB_OK); //必须加上这句 WM_CHAR中才能捕获到字符,我倒??
switch ((int) wParam)
{
case VK_RETURN://当按下回车,捕获不到回车,怪??
.....
}
...
case WM_CHAR:
....
{
if( pMsg->message == WM_KEYDOWN )
{
if( pMsg->wParam == VK_RETURN )
{
.............
}
}
return CDialog::PreTranslateMessage(pMsg);
}
{
if( pMsg->message == WM_KEYDOWN )
{
if( pMsg->wParam == VK_RETURN )
{
.............
}
}
return CDialog::PreTranslateMessage(pMsg);
}这是MFC阿 我写的是win32程序,不使用MFC
没有窗口肯定不能抓到key_down消息的,系统怎么知道要发给你啊?
要不你用HOOK好了。
是啊 可是没理由让我加上这句MessageBox(hwnd, "test", "倒", MB_OK); WM_CHAR才有反应阿
有理由这么做,这个消息是在Messagebox的messagepump里抓到了。
case WM_COMMAND:
中可以得到;
那你总有个窗口吧?
没有窗口肯定不能抓到key_down消息的,系统怎么知道要发给你啊?
要不你用HOOK好了。
----------------有窗口。
主界面就没问题,WM_KEYDOWN捕获都正常,就是弹出的窗口不行,估计只能用HOOK了。
你是在弹出的窗口类中去响应这个消息的吗?
弹出的对话框是系统内建对话框?