中国高校课件下载中心 》 教学资源 》 大学文库

兰州大学信息学与工程学院:《Windows SDK程序设计基础》WinMain函数:Windows程序的入口点(程建军)

文档信息
资源类别:文库
文档格式:PDF
文档页数:42
文件大小:542.06KB
团购合买:点击进入团购
内容简介
char szclassName[]=Firstwindow"i char szAppTit1e[]="我们的第一个 Windows窗口程序 char szstrDisp[]="大家好,第一个窗口演示程序!希望能起到抛砖引玉的作用";
刷新页面文档预览

2007年暑期学校课程 2007年12月7日·实验楼A405 信息学与工程学 Windows SDK程序设计基础 Windows程序的基本结构 程建军 小结 访问主页 标题页 1909 第1页共13页 返回 兰州大学 全屏显示 信息科学与工程学院 关闭 退出 chengjianjun@lzu.edu.cn

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 1   13  ˆ £  ¶ w « ' 4 ò Ñ ⑧ 2007cÛÏÆ‘§ 2007c127F· ¢¢A405 Windows SDK §SOÄ: § ï  = ² Œ Æ & E ‰ Æ † ó § Æ  chengjianjun@lzu.edu.cn

Windows'窗口程序的基本结构 Windows程序的基本结构 小结 InMain 函数 金窗口过程 访问主页 Windows程序的消息机制 标题页 金MSG结构体类型 消息队列与消息循环 第2页共13页 2 Windows程序从启动到结束的过程 全屏显示 关闭

Windows § S  Ä  (  ( ¯ Ì  I K  JJ II J I 1 2   13  ˆ £  ¶ w « ' 4 ò Ñ Ì ‡ S N ⑧ Windows I  § S  Ä  (  ⑧ WinMain ¼ ê ⑧ I  L § ⑧ Windows § S žE Å › ⑧ MSG (  N a . ⑧ žE è  †žE Ì ‚ ⑧ Windows § S l éÄ ( å  L §

全 Windows程序的基本结构 例:简单的 Windows窗口程序 海疗 Windows程序的基本结构 小结 访问主页 标题页 第3页共13页 全屏显示 关闭

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 3   13  ˆ £  ¶ w « ' 4 ò Ñ ⑧ Windows§SÄ( ~µ{üWindowsI§S

全 Windows程序的基本结构 例:简单的 Windows窗口程序 海疗 #include " windows. h" char szclassName[]=Firstwindow"i char szAppTit1e[]="我们的第一个 Windows窗口程序 char szstrDisp[]="大家好,第一个窗口演示程序!希望能起到抛砖引玉的作用"; LRESULT CALLBACK WinProc(HWND hwin, UINT uMsg, WPARAM wPrm, LPARAM 1Prm) Windows程序的基本结构 小结 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, pCmdLine, int nCmdShow) WNDCLASS WCi 访问主页 HWIND hWin MSG msgMessagei 标题页 wc. hInstanceshInstance; we. hIcon= LoadIcon(NULL, IDI APPL工cAT工ON) wC cUrsor=Loadcursor (NULL, IDC arrow)i 第3页共13页 wc.hbrBackground=(HBRUSH) Getstockobject(WHITE BRUSH) wC.lpfnWndProc=WinProc; WC.IpszClassName=szClassName 全屏显示 wC. lpszMenuName=NULL 关闭 wcstyle=CS_HREDRAW I CS_VREDRA wc. cbClsExtra=0 wc. cbWndExtra=0

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 3   13  ˆ £  ¶ w « ' 4 ò Ñ ⑧ Windows§SÄ( ~µ{üWindowsI§S #include "windows.h" char szClassName[]="FirstWindow"; char szAppTitle[]="·‚1‡WindowsI§S"; char szStrDisp[]="Œ[Ч1‡Iü«§SœF"Uå<ڌŠ^"; LRESULT CALLBACK WinProc(HWND hWin,UINT uMsg,WPARAM wPrm,LPARAM lPrm); int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow){ WNDCLASS wc; HWND hWin; MSG msgMessage; wc.hInstance=hInstance; wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpfnWndProc=WinProc; wc.lpszClassName=szClassName; wc.lpszMenuName=NULL; wc.style=CS_HREDRAW | CS_VREDRAW; wc.cbClsExtra=0; wc.cbWndExtra=0;

if(! RegisterClass(&wc)) MessageBox(NULL,"注册窗口类失败","错误",MB_OK); return -1 小结 访问主页 标题页 第4页共13页 全屏显示 关闭

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 4   13  ˆ £  ¶ w « ' 4 ò Ñ if(!RegisterClass(&wc)){ MessageBox(NULL,"5þIa}","†Ø",MB_OK); return -1; }

if(! RegisterClass(&wc)) MessageBox(NULL,"注册窗口类失败","错误",MBOK); 海疗 return -1 in=CreateWindow(szClassName, szAppTitle, WS_OVERLAPPEDWINDOW CW USEDEFAULT, CW USEDEFAULT CW USEDEFAULT, CW USEDEFAULT Windows程序的基本结构 小结 NULL, NULL, hInstance, 0) if(!hwin) MessageBox(NUL,"创建窗口失败","错误",MB_OK) return -1 访问主页 标题页 Sh。w啊 indow(hWin, nCmdshow); UpdateWindow(hwin) 第4页共13页 全屏显示 关闭

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 4   13  ˆ £  ¶ w « ' 4 ò Ñ if(!RegisterClass(&wc)){ MessageBox(NULL,"5þIa}","†Ø",MB_OK); return -1; } hWin=CreateWindow(szClassName,szAppTitle,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,0); if(!hWin){ MessageBox(NULL,"MïI}","†Ø",MB_OK); return -1; } ShowWindow(hWin,nCmdShow); UpdateWindow(hWin);

if(! RegisterClass(&wc)) MessageBox(NULL,"注册窗口类失败","错误",MBOK); 海疗 return -1 hwin=CreateWindow(szClassName, szAppTitle, WS_OVERLAPPEDWINDOW CW USEDEFAULT, CW USEDEFAULT CW USEDEFAULT, CW USEDEFAULT Windows程序的基本结构 小结 NULL, NULL, hInstance, 0) if(!hwin) MessageBox(NUL,"创建窗口失败","错误",MB_OK) return -1 访问主页 标题页 Sh。w啊 indow(h啊in, nCmdshow); UpdateWindow(hWin) while(GetMessage(&msgMessage, NULL, 0,0)) 第4页共13页 TranslateMessage(&msgMessage)i DispatchMessage(&msgMessage) 全屏显示 return 0: 关闭

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 4   13  ˆ £  ¶ w « ' 4 ò Ñ if(!RegisterClass(&wc)){ MessageBox(NULL,"5þIa}","†Ø",MB_OK); return -1; } hWin=CreateWindow(szClassName,szAppTitle,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,0); if(!hWin){ MessageBox(NULL,"MïI}","†Ø",MB_OK); return -1; } ShowWindow(hWin,nCmdShow); UpdateWindow(hWin); while(GetMessage(&msgMessage,NULL,0,0)){ TranslateMessage(&msgMessage); DispatchMessage(&msgMessage); } return 0; }

LRESULT CALLBACK WinProc(HWND hWin, UINT uMsg, WPARAM wPrm, LPARAM IPrm)i switch(uMsg) case WM DESTROY Windows程序的基本结构 小结 P。 stouitMessage(0); break; 访问主页 defau1七 标题页 return DefwindowProc(hWin, uMsg, wPrm, pRm)i 第5页共13页 全屏显示 关闭

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 5   13  ˆ £  ¶ w « ' 4 ò Ñ LRESULT CALLBACK WinProc(HWND hWin,UINT uMsg,WPARAM wPrm,LPARAM lPrm){ switch(uMsg){ case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWin,uMsg,wPrm,lPrm); } return 0; }

Win main函数: Windows程序的入口点 函数原型为 int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst LPSTR lpCmdLine, int nShowCmd) 小结 访问主页 标题页 第6页共13页 全屏显示 关闭

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 6   13  ˆ £  ¶ w « ' 4 ò Ñ ⑧ WinMain()¼êµWindows§S\: ¼ê.µ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd);

WinMain函数: Windows程序的入口点 函数原型为: 信息学与工程学 int APIENTRY WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR IpCmdLine, int nShowCmd); 其中: Windows程序的基本结构 APIENTRY #define APIENTRY WINAPI 小结 WINAPI是系统函数调用的约定,代替早先的 FAR PASCAL,由系统 自动转换成合适的调用方式。FAR早期定义成far,指跨段的存 访问主页 取,Win32不再使用,在32位的VC中其定义是空; PASCAL指函数参 标题页 数从左到右求值,函数调用返回时由被调用函数自己清理栈 第6页共13页 返回 全屏显示 关闭 退出

Windows§SÄ( ( ¯ Ì  I K  JJ II J I 1 6   13  ˆ £  ¶ w « ' 4 ò Ñ ⑧ WinMain()¼êµWindows§S\: ¼ê.µ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd); Ù¥µ ✑ APIENTRY =⇒ #define APIENTRY WINAPI WINAPI´XÚ¼êN^½§O@kFAR PASCAL§dXÚ gÄ=†¤Ü·N^ª"FAR@Ͻ¤far§ªã §Win32Ø2¦^§332 VC¥Ù½Â´¶PASCAL¼êë êl†m¦Š§¼êN^ˆ£ždN^¼êgCnÒ

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档