创build窗口而不注册WNDCLASS?

是否有必要始终为您的应用程序build立并注册新的WNDCLASS(EX)? 然后使用主窗口的lpszClassName?

是不是有一些预制的类名称,我们可以用于主窗口,如button和文本框等“button”和“编辑”?

您可以使用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创建了资源编辑器的对话框。

顶层应用程序窗口没有预定义的窗口类。 您必须为您的应用程序注册一个窗口类,或使用对话框。