- 1、本文档共61页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(程序设计第章
第13章 MFC编程基础 13.1 Windows编程及MFC简介——了解 13.2 基于对话框的应用程序设计——重点 13.3 单文档(SDI)和多文档(MDI)应用程序 ——了解 13.1 Windows编程及MFC简介 13.1.1 Windows?API编程基础 1.Windows 编程中的基本概念 1)窗口 窗口是Windows程序的基本组成部分,它是用户与应用程序进行交互的场所。 图13.1是一个典型的windows窗口以及它的组成。 2)句柄 句柄是Windows编程中一个很重要的概念,它是由系统分配的用来唯一标识Windows程序中不同对象的一个4字节的整数值。常用的句柄类型有以下几种: HWND 窗口句柄 HINSTANS 实例句柄 HMENU 菜单句柄 HCURSOR 光标句柄 HICON 图标句柄 HDC 设备句柄 HPEN 画笔句柄 HBRUSH 画刷句柄 3)事件和消息 Windows程序是基于事件或消息驱动的,其基本思想是,用特定的事件确定应用程序的控制流程。程序要花费它的大部分时间来等待这些事件,并提供代码响应其中部分事件。当程序完成了对事件的响应之后,它就返回等待状态。 4)WinMain函数 WinMain函数是Windows API编程的入口函数,就象控制台程序的入口函数Main一样。它主要作用是显示主窗口,完成消息循环。 5)消息循环 Windows程序中每发生一个事件时,系统都把产生的消息放到应用程序的消息队列中。Winmain函数的消息循环语句从消息队列中逐个取出消息。并将其传递给窗口函数进行相应的处理。消息循环一般采用如下形式: while (GetMessage (msg, NULL, 0, 0)) { TranslateMessage (msg) ; DispatchMessage (msg) ; } 6)窗口函数 窗口函数是一个回调函数,所谓的回调函数就是用户按照系统规定的形式提供给系统调用的函数。它主要对消息循环发送来的消息进行分类处理。 7)窗口类 Windows编程中的窗口类不是指某个特定的C++类,而是一个描述Windows窗口属性的数据结构,它的定义如下: typedef struct _WNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; } WNDCLASS ; 2.Windows 编程实例 本程序在在WinMain函数中创建一个主窗口,当鼠标左键单击主窗口时弹出一个消息框。 在VC++6.0中执行菜单File—New,弹出如如图13..2所示对话框,输入工程名HelloWorld,选择Win32 Application。 【程序13.1】 #include windows.h //窗口函数原型申明 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; //WinMain函数 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hwnd ; //主窗口句柄 MSG msg ; //消息变量 WNDCLASS wndclass ; //窗口类 wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIco
文档评论(0)