创建一个win32窗口程序
2016-06-16 21:23
477 查看
#include "stdafx.h" ////2 HINSTANCE g_hInst=NULL; ////3 //窗口处理函数 LRESULT CALLBACK WndProc(HWND hWnd,//窗口句柄 UINT nMsg,//窗口消息Id WPARAM wParam,//消息传来的两个参数 LPARAM lParam) { switch(nMsg) //消息退出的命令 { case WM_DESTROY: PostQuitMessage(0); //使窗口退出 return 0; } //返回缺省的窗口处理函数 return DefWindowProc(hWnd,nMsg,wParam,lParam); } ////4 //注册窗口-首先使用WNDCLASSEX定义窗口类的各项参数 BOOL RegisterWnd(LPSTR pszClassName) { WNDCLASSEX wce ={0}; wce.cbSize =sizeof(wce); wce.cbClsExtra =0;//窗口类的附加参数 wce.cbWndExtra =0;//窗口的附加参数 wce.hbrBackground =HBRUSH(COLOR_WINDOW);//窗口的背景画刷 wce.hCursor =NULL;//窗口的光标 wce.hIcon =NULL;//窗口的图标 wce.hIconSm =NULL;//窗口的小图标 wce.hInstance =g_hInst;//应用程序的实例句柄 wce.lpfnWndProc =WndProc;//窗口处理函数指针 wce.lpszClassName =pszClassName;//窗口类的名称 wce.lpszMenuName =NULL;//菜单名称 wce.style =CS_HREDRAW|CS_VREDRAW;//窗口风格 //注册窗口用RegisterClassEx,返回用ATOM ATOM nAtom=RegisterClassEx(&wce); if(0==nAtom) { return FALSE;//窗口注册没有成功 } return TRUE; } ////5创建窗口 HWND CreateWnd(LPSTR pszClassName) { HWND hWnd=CreateWindowEx(0,//窗口的扩展风格 pszClassName,//窗口类的名称 "MyWnd",//窗口的标题 WS_OVERLAPPEDWINDOW,//窗口的堆叠风格 CW_USEDEFAULT,//窗口的坐标和长宽 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL,//窗口的父窗口 NULL,//窗口的菜单 g_hInst,//应用程序句柄 NULL);//窗口创建时的附加参数 return hWnd; } ////6窗口的显示 void DisplayWnd(HWND hWnd) { ShowWindow(hWnd,SW_SHOW);//显示窗口 UpdateWindow(hWnd);//刷新窗口界面 } ////7窗口的消息循环 void Message() { MSG msg={0}; while (GetMessage(&msg,NULL,0,0))//获取消息 { TranslateMessage(&msg);//翻译消息 DispatchMessage(&msg);//调用窗口处理函数处理消息 } } //// 1 新建时自动生成 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. ////将程序依次执行 g_hInst=hInstance; RegisterWnd("MYWND");//注册窗口 HWND hWnd=CreateWnd("MYWND");//创建窗口 DisplayWnd(hWnd);//显示窗口 Message( );//执行消息循环 return 0; }