在Visual C 中编码的Win32应用程序中如何检测 f1> f1 key and Restore/Restore/Restore/restore/发生这种情况时最大化其GUI?
即使另一个应用程序具有焦点,也应检测到此密钥,并覆盖通常的F1" help"窗口行为。
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
const wchar_t CLASS_NAME[] = L"Test";
WNDCLASS wc = { };
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
HWND hwnd = CreateWindowEx(0, CLASS_NAME, L"Test", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
// Should it be detected here ? //
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
@rbmm的评论中提到的解决方案是:
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
const wchar_t CLASS_NAME[] = L"Test";
WNDCLASS wc = { };
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
HWND hwnd = CreateWindowEx(0, CLASS_NAME, L"Test", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
RegisterHotKey(hWnd, 100, 0, VK_F1); // here we go!
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
if (msg.message == WM_HOTKEY)
// Do something here
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
另请参阅此处。