资源描述:
《windows程序设计初步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Windows程序设计初步学习目标了解Windows窗口的基本结构熟悉WinMain函数的参数意义了解应用程序实例句柄的意义熟练运用Windows窗口类结构了解包括窗口句柄在内的所以句柄的意义理解消息循环机制熟练运用窗口回调函数了解消息队列熟悉常用的Window消息熟练运用程序发送消息学习重点理解消息循环机制理解句柄的概念熟练运用窗口回调函数学习难点理解消息循环机制熟练运用窗口回调函数图形化的用户界面过程驱动程序控制用户下一步该如何做代码决定程序下一步如何做程序接下来做什么有一个明确的预测程序控制着主导着用户下一步做什么优点:1、程序设计简单2、程序员很好地控制程序下一步的行为缺点:1、大量浪
2、费CPU资源2、难以支持多任务并存事件驱动用户决定下一步该如何做代码的执行流程受到用户的控制程序接下来做什么没有明确的预测用户自由地决定下一步做什么优点:1、程序设计简单2、节省CPU资源3、容易实现多任务并存缺点:1、程序设计比较难2、程序员难以把握程序下一步的行为Windows程序SDK即softwaredevelopekit(软件开发工具包),#includeint_stdcallWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){MessageBox(NULL,
3、"ThisismyfirstWin32programme","Hello,world!",MB_OK);return0;}简单的Windows程序新式的主函数int_stdcallWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)hInstance:当前进程句柄hPrevInstance:前一个进程句柄(已经淘汰)lpCmdLine:命令行参数字符串nCmdShow:窗口的显示样式关于Windows句柄——HINSTANCE(应用程序实例句柄):Windows支持同时有很多应用程序活动,管
4、理这些应用程序需要的一个唯一的ID值。HWND(窗口句柄):Windows可以同时在桌面上显示很多窗口,管理这些窗口需要一个唯一的ID值。句柄就是一个ID值句柄实质上是一个指向内存某一个区域的指针,这个内存区域存放着与这个句柄有关的一个数据结构自创一个窗口自创一个窗口分三步走:注册窗口类创建窗口显示窗口窗口显示完全之后,接下来进入消息循环注册窗口类让Windows明白将会有一种窗口即将建立ATOMRegisterClassEx(CONSTWNDCLASSEX*lpwcx);typedefstruct_WNDCLASSEX{UINTcbSize;//结构体的大小UINTstyle;//类风格WN
5、DPROClpfnWndProc;//回调函数地址intcbClsExtra;//扩展字节intcbWndExtra;//扩展字节HANDLEhInstance;//进程实例句柄HICONhIcon;//窗口大图标HCURSORhCursor;//鼠标光标形状HBRUSHhbrBackground;//窗口背景色LPCTSTRlpszMenuName;//窗口主菜单LPCTSTRlpszClassName;//类名字符串HICONhIconSm;//窗口小图标}WNDCLASSEX;创建一个窗口hWnd=CreateWindow(szWindowClass,//窗口类字符串szTitle,//
6、窗口标题WS_OVERLAPPEDWINDOW,//窗口外观样式20,30,400,300,//窗口位置、大小NULL,//父窗口句柄NULL,//窗口主菜单句柄hInstance,//窗口所在进程实例NULL//暂时保留);创建成功后返回,可惜它不负责显示窗口显示窗口显示窗口ShowWindow(hWnd,SW_SHOW);更新窗口UpdateWindow(hWnd);显示哪个窗口如何显示窗口更新哪个窗口消息循环不断循环监测用户消息while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}Ge
7、tMessage:循环检测消息队列中是否具有消息如果没有消息,则等待至有消息为止,返回非0值TranslateMessage:将消息转换成合适的形式只是对键盘消息有一定用途DispatchMessage:触发Windows调用回调函数执行程序员代码消息结构体取得的消息存放在一个结构体中typedefstructtagMSG{HWNDhwnd;//接收消息的窗口句柄UINTmessage;//消息值