问题描述
我已经使用 windows 库创建了一个基本的 GUI,但遇到了一个问题。 GUI 构建并执行得很好,但问题是按钮功能在实际窗口加载之前执行。我希望按钮在按下而不是在加载时执行所需的功能。下面是我认为问题所在的代码。
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WParaM wParam,LParaM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
TCHAR greeting[] = _T("T3chSpl01ts Version - 1.0");
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
textout(hdc,5,greeting,_tcslen(greeting));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
break;
case WM_CREATE:
{
Button = CreateWindow("Button","Inject",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,20,100,30,hWnd,(HMENU)ID_INJECT,GetModuleHandle(NULL),NULL);
}
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case ID_INJECT:
{
::test();
break;
}
}
}
}
return 0;
}
解决方法
您的 WM_CREATE
处理程序缺少 break
语句,因此在创建窗口时代码流“落入”您的 WM_COMMAND
处理程序。