自己设计的子窗体,只是注册个回调(WndProc),并无明确的消息循环,所以无法使用 TranslateMessage(&msg)
自己想个法子:
在 WM_KEYDOWN 消息里用如下代码: MSG msg;
msg.hwnd = hWnd;
msg.message = uMsg;
msg.wParam = wParam;
msg.lParam = lParam;
msg.time = GetTickCount();
msg.pt.x = 0;
msg.pt.y = 0; int a = TranslateMessage(&msg);
结果当然是得不到 WM_CHAR 消息,得到就不会来问了 = =各位大牛谁有解决的方法?
自己想个法子:
在 WM_KEYDOWN 消息里用如下代码: MSG msg;
msg.hwnd = hWnd;
msg.message = uMsg;
msg.wParam = wParam;
msg.lParam = lParam;
msg.time = GetTickCount();
msg.pt.x = 0;
msg.pt.y = 0; int a = TranslateMessage(&msg);
结果当然是得不到 WM_CHAR 消息,得到就不会来问了 = =各位大牛谁有解决的方法?
{
if (0x8000 & GetKeyState(VK_CONTROL))
{
switch (wParam)
{
case 0x58: //X key
{
if (0 != _this->stOrgData.Selected.Length)
{
}
else
{
} break;
} case 0x43: //C key
{
if (0 != _this->stOrgData.Selected.Length)
{
} break;
} case 0x56: //V key
{
break;
} case 0x46: //F key
{
break;
}
}
}
else
{
if (!(0x8000 & GetKeyState(VK_MENU)))
{
MSG msg;
msg.hwnd = hWnd;
msg.message = uMsg;
msg.wParam = wParam;
msg.lParam = lParam;
msg.time = GetTickCount();
msg.pt.x = 0;
msg.pt.y = 0; TranslateMessage(&msg); do
{
GetMessage(&msg, NULL, 0, 0);
} while (WM_CHAR != msg.message); DispatchMessage(&msg);
}
} break;
}
这怎么可能,MSG里的hwnd干什么吃的
要是只有一个窗口的话根本不用hwnd了,一个程序中父窗口和子窗口的消息都经过消息循环的