#include <stdio.h>
#include <stdlib.h>
#define WINVER 0x0500
#include <windows.h>
/// Glabal Handle
HANDLE StdHandle;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
StdHandle = GetStdHandle(STD_OUTPUT_HANDLE); // Console window
MSG Msg ;
while (GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_KEYDOWN:
if(wParam == VK_LCONTROL)
printf ("LSHIFT");
break;
return 0 ;
}
return DefWindowProc(hWnd, msg, wParam, lParam) ;
}
此代码可以使用 mingw32-GCC 编译,没有任何警告和错误。
如果按下左侧控件,它应该打印出“LSHIFT”,但它没有。
为什么?
你的程序没有创建窗口,所以它不能接收任何窗口消息。
您通常希望创建并注册一个窗口类(使用 RegisterClass()
或 RegisterClassEx()
),然后使用 创建窗口实例>CreateWindow()
或 CreateWindowEx()
。
我是一名优秀的程序员,十分优秀!