【发布时间】:2013-06-02 03:23:52
【问题描述】:
我正在为 WinAPI 中的游戏制作自动点击器,我在主窗口上有 4 个简单的按钮。当用户按下“开始”按钮时,我希望打开另一个窗口,询问他们的设置,例如点击次数和点击之间的时间。当我尝试创建一个新窗口时,什么都没有发生,但其他一切都运行良好。
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
case WM_COMMAND:
{
switch (wParam)
{
case ID_START:
{
HINSTANCE hInstance = GetModuleHandle(CLASS_NAME);
HWND settings = CreateWindowEx(
0,
L"Settings",
L"Settings",
WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CHILD,
100, 100, 600, 200,
NULL,
(HMENU) ID_SETTINGS,
hInstance,
NULL
);
MSG msg = { };
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
case ID_QUIT:
{
PostQuitMessage(0);
return 0;
}
case ID_CALIB:
{
if (MessageBox(hwnd, L"You pressed Calibrate", L"Calibrate", MB_OK))
{
return 0;
}
}
case ID_INFO:
{
if (MessageBox(hwnd, L"You pressed about", L"About", MB_OK))
{
return 0;
}
}
}
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW+1));
EndPaint(hwnd, &ps);
return 0;
}
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
我今天刚开始使用 WinAPI,所以我非常陌生。提前感谢您的帮助!
【问题讨论】:
-
对于设置,您可能希望启动对话框而不是创建普通窗口。
-
用对话框编辑器和对话框过程(有点像窗口过程)创建一个对话框模板,并在运行时调用DialogBox。你也可以使用 CreateDialog 来做一个无模式对话框(更像是一个普通窗口),但对于第一次尝试,我会坚持使用模式对话框(即 DialogBox)。