一.窗口的创建过程
1.设计窗口类
2.注册窗口类
3.创建窗口
4.显示窗口
#include <windows.h>
//回调函数声明
LRESULT CALLBACK MyProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
//主函数
int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow ) // show state
{
const char clsName[] = "mycls"; //窗口类名称
HWND hFirstWnd; //创建的窗口的句柄
WNDCLASS cls; //wndclass结构体
MSG msg; //消息结构体
//填充wndclass结构体
cls.cbClsExtra= 0;
cls.cbWndExtra= 0;
cls.hbrBackground= HBRUSH( GetStockObject( WHITE_BRUSH ) );
cls.hCursor = LoadCursor( NULL, IDC_ARROW );
cls.hIcon = LoadIcon( NULL, IDI_WARNING );
cls.hInstance = hInstance;
cls.lpfnWndProc= MyProc;
cls.lpszClassName= "mycls";
cls.lpszMenuName= NULL;
cls.style = CS_VREDRAW | CS_HREDRAW;
//注册窗口类
if( !RegisterClass(&cls) )
{
return 0;
}
//创建窗口
hFirstWnd = CreateWindow( clsName, //窗口类名称,必须与注册的窗口类名称一致及与lpszClassName一致
"hello world", //窗口的标题
WS_OVERLAPPEDWINDOW,//窗口的style,是否有最大最小等按钮
CW_USEDEFAULT , //窗口左上角x坐标
CW_USEDEFAULT, //窗口左上角y坐标
CW_USEDEFAULT, //窗口的宽
CW_USEDEFAULT, //窗口的高
NULL, //父窗口
NULL, //菜单menu
hInstance, //实例,与main中一致
NULL); //传递的参数,在窗口创建WM_CREATE的时候传递给msg的lparam
//创建完成后显示窗口
ShowWindow( hFirstWnd, nCmdShow );
//UpdateWindow更新窗口,此时会使客户区域无效,发送WM_PAINT消息,WM_PAINT使区域有效
UpdateWindow(hFirstWnd);
//消息循环
//GetMessage在接收到