Winapi:如何根据按下的键为我的按钮发送不同的消息?
Winapi : How do I for my button send different message according to the key pressed?
我创建了一个按钮,单击该按钮将打开一个 .exe
文件并关闭当前应用程序:
HWND Button = CreateWindowEx(0, L"Button", L"Exe Application", WS_BORDER | WS_VISIBLE | WS_CHILD, 500, 500, 200, 200, hWndParent, (HMENU)BUTTON_EXE, 0, 0);
并且在 WindProc
:
switch (uMsg)
{
case WM_COMMAND:
switch (wParam)
{
case BUTTON_EXE:
ShellExecute(hwnd, NULL, L"Module 1.exe", NULL, NULL, SW_SHOW);
PostQuitMessage(0);
return 0;
}
return 0;
}
我希望当我点击带有按键的按钮时(例如,"maj"
),当前应用程序不会关闭。
所以,我希望根据单击按钮时按下的键发送不同的消息,但我没有找到如何。有办法吗?
您可以对邮件进行额外的处理。例如:
- 您的按钮将发送另一条消息 (WM_BUTTON_EXE_RAW)。
- 如果仅按下按钮,您会收到该消息并重新发送其他消息 (BUTTON_EXE)。
您可以通过调用GetKeyState
函数来检查在处理WM_COMMAND
消息时是否按下了某个键。根据其 return 值,您可以实现不同的逻辑。
重要的是调用 GetKeyState
(与 GetAsyncKeyState
相对)以获取单击按钮时的按键状态。
我创建了一个按钮,单击该按钮将打开一个 .exe
文件并关闭当前应用程序:
HWND Button = CreateWindowEx(0, L"Button", L"Exe Application", WS_BORDER | WS_VISIBLE | WS_CHILD, 500, 500, 200, 200, hWndParent, (HMENU)BUTTON_EXE, 0, 0);
并且在 WindProc
:
switch (uMsg)
{
case WM_COMMAND:
switch (wParam)
{
case BUTTON_EXE:
ShellExecute(hwnd, NULL, L"Module 1.exe", NULL, NULL, SW_SHOW);
PostQuitMessage(0);
return 0;
}
return 0;
}
我希望当我点击带有按键的按钮时(例如,"maj"
),当前应用程序不会关闭。
所以,我希望根据单击按钮时按下的键发送不同的消息,但我没有找到如何。有办法吗?
您可以对邮件进行额外的处理。例如:
- 您的按钮将发送另一条消息 (WM_BUTTON_EXE_RAW)。
- 如果仅按下按钮,您会收到该消息并重新发送其他消息 (BUTTON_EXE)。
您可以通过调用GetKeyState
函数来检查在处理WM_COMMAND
消息时是否按下了某个键。根据其 return 值,您可以实现不同的逻辑。
重要的是调用 GetKeyState
(与 GetAsyncKeyState
相对)以获取单击按钮时的按键状态。