是否绝对有必要始终为您的应用程序构建和注册一个新的 WNDCLASS(EX)?然后将 lpszClassName 用于主窗口?
难道没有一些我们可以用于主窗口的预建类名,比如按钮和文本框等有“Button”和“Edit”吗?
最佳答案
您可以使用 CreateDialog() 而不是 CreateWindow() 使用对话框资源创建迷你应用程序。样板代码可能如下所示,减去所需的错误检查:
#include "stdafx.h"
#include "resource.h"
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
DestroyWindow(hDlg);
PostQuitMessage(LOWORD(wParam)-1);
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
HWND hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
if (hWnd == NULL) DebugBreak();
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
假设您使用 ID IDD_DIALOG1 使用资源编辑器创建了一个对话框。
关于在不注册 WNDCLASS 的情况下创建窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232221/