方法是自己定义一个类,在类的初始化中加载窗口创建代码,下面我演示自己定义一个windowAuto的类
#ifndef WINDOWAUTO_H
#define WINDOWAUTO_H
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
HDC hdc;
//PAINTSTRUCT ps;
switch(message)
{
/*
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
OnPaint(hdc);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
*/
case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
class WindowAuto
{
public:
WindowAuto()
{
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = TEXT("GettingStarted");
RegisterClass(&wndClass);
hWnd = CreateWindow(
TEXT("GettingStarted"), // window class name
TEXT("Getting Started"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL); // creation parameters
ShowWindow(hWnd, SW_SHOWDEFAULT);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//return msg.wParam;
}
WNDCLASS wndClass;
HWND hWnd;
MSG msg;
HINSTANCE hInstance;
};
#endif
下面是源文件
#include <windows.h>
#include "windowAuto.h"
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WindowAuto wnd;
return 0;
}
这样,在主函数中仅仅创建一个类对象wnd,就自动生成一个窗口了。