资源描述:
《【win32】编写程序窗口的步骤.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、QQ交流群:14973398,期待你的加入!第一个窗口程序环境:VisualC++6.0.File—New—workspaceFile—New—Project—Win32Application—ASimpleApplication—finishe—OK步骤:1.定义WinMain函数:程序的入口2.定义窗口过程函数:处理消息1)窗口过程函数2)缺省过程函数3.注册窗口类:先注册才能创建1)窗口类结构体:WNDCLASSEXwcex;2)注册窗口类RegisterClass(&exec);4.创建窗口:在内存中创建窗口对象,并不可见。Create
2、Window,返回值为步骤5所用5.显示窗口:在屏幕上显示窗口1)显示:ShowWindow(步骤4的句柄,显示方式)2)刷新:UpdateWindow(步骤4的句柄)6.消息循环:重复执行提取消息、翻译消息、派发消息,处理消息1)从窗口的消息队列中提取一条消息GetMessage2)将虚键消息翻译为字符消息TranslateMessage3)将消息派发到窗口过程函数DispatchMessage4)在窗口过程函数中处理消息,即执行步骤2程序:#include"stdafx.h"LPCTSTRg_pszAppName="WinHello";//
3、应用程序名,用于标题栏(全局)LPCTSTRg_pszMainWndClass="MAIN";//主窗口类名,窗口的标识(全局)HINSTANCEg_hInstance=NULL;//应用程序的实例句柄(全局)//主窗口过程函数,LRESULTCALLBACKMainWndProc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam){switch(uMsg){caseWM_DESTROY:PostQuitMessage(0);return0;}returnDefWindowProc(hWnd,uMsg,wP
4、aram,lParam);}//注册窗口类typedefunsignedshortWORD;typedefWORDATOM;ATOMInitApplication(HINSTANCEhInstance){WNDCLASSEXwcex={0};//定义窗口类,以下设置窗口类成员属性,可查WNDCLASSEXwcex.cbSize=sizeof(wcex);//结构体的大小,在调用GetClassInfoEx函数确保已设置。wcex.style=CS_HREDRAW
5、CS_VREDRAW;//窗口风格wcex.lpfnWndProc=MainWnd
6、Proc;//窗口过程函数wcex.cbClsExtra=0;//窗口类附加数据缓冲区字节数wcex.cbWndExtra=0;//窗口附加数据缓冲区字节数wcex.hInstance=hInstance;//窗口实例句柄wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);//大图标QQ交流群:14973398,期待你的加入!wcex.hIconSm=LoadIcon(NULL,IDI_APPLICATION);//小图标wcex.hCursor=LoadCursor(NULL,IDC_ARROW);//光标wc
7、ex.hbrBackground=GetSysColorBrush(COLOR_WINDOW);//背景wcex.lpszMenuName=NULL;//菜单项,MAKEINTRESOURCE(IDR_MENU1)wcex.lpszClassName=g_pszMainWndClass;//窗口类名returnRegisterClassEx(&wcex);//注册窗口类,直接为CreateWindowEx调用函数所使用.}//创建并显示窗口BOOLInitInstance(HINSTANCEhInstance,intnCmdShow){g_hI
8、nstance=hInstance;HWNDhwndMain=CreateWindowEx(//返回创建窗口句柄WS_EX_CLIENTEDGE,//ExtendedWindowStyles,本例为3D效果窗口g_pszMainWndClass,//注册的类名g_pszAppName,//窗体名,标题栏显示名称WS_OVERLAPPEDWINDOW,//窗口风格CW_USEDEFAULT,//窗体水平位置CW_USEDEFAULT,//窗体垂直位置CW_USEDEFAULT,//窗体宽度CW_USEDEFAULT,//窗体高度NULL,//窗体
9、句柄NULL,//菜单句柄hInstance,//实例窗体句柄NULL);//创建窗体的数据if(!hwndMain)returnFALSE;Show