为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

visual+c++6.0可视化编程1

2010-09-05 35页 ppt 12MB 92阅读

用户头像

is_505567

暂无简介

举报
visual+c++6.0可视化编程1nullvisual c++6.0可视化编程 visual c++6.0可视化编程 一、Windows编程基础可视化开发 系统集成了一系 列系统可用资源 和开发工具一、Windows编程基础null采用交互式方法时,可视化开发平台给出了许多选用的对象,程序员可选择所需对象并确定其属性,由此搭建起应用程序的“大框架”,并可根据需要进一步编写必要的细节代码段,最后构成完整的应用程序对象特征:具有规范形态和操作模式nullAPIAPI函数 的功能null 利用Windows API函数编写Windows应用程序必须首先了解以下...
visual+c++6.0可视化编程1
nullvisual c++6.0可视化编程 visual c++6.0可视化编程 一、Windows编程基础可视化开发 系统集成了一系 列系统可用资源 和开发工具一、Windows编程基础null采用交互式方法时,可视化开发平台给出了许多选用的对象,程序员可选择所需对象并确定其属性,由此搭建起应用程序的“大框架”,并可根据需要进一步编写必要的细节代码段,最后构成完整的应用程序对象特征:具有规范形态和操作模式nullAPIAPI函数 的功能null 利用Windows API函数编写Windows应用程序必须首先了解以下内容: (1)窗口的概念 (2)事件驱动的概念 (3)句柄 (4)消息null(1) 窗口 一个应用程序的窗口一般包含下列成分:null编写一个Windows应用程序首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与数据交换的过程。应用程 序与用 户之间 交互的 接口环 境系统管理 应用程序 的基本单位Win应用程序 基本的操作单元nullWindows程序是针对事件或消息的处理进行 消息是描述事 件发生的信息 (如按下鼠标或键盘)事件驱动编程方法对于编写交互式程序很有用处,它避免了死板的操作模式Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往并不要求有次序之分。(2)事件驱动 null常用句柄类型及其说明(3) 句柄应用程序通过 句柄访问相应 的对象信息HWND 窗口句柄 HDC 设备环境句柄 HBITMAP 位图句柄 HCURSOR 光标句柄 HICON 图标句柄 HFONT 字体句柄 HMENU 菜单句柄 HPEN 画笔句柄 HFILE 文件句柄 HBRUSH 画刷句柄 HINSTANCE 当前实例句柄null Windows应用程序利用Windows消息(Message)与应用程序及系统进行信息交换。typedef struct tagMSG {HWND hwnd; 窗口句柄,为null,则可检索所有驻留在消息队列中的消息 UINT message;消息值,由Windows.h头文件中的宏定义来标识 WPARAM wParam; 包含有关消息的附加信息,不同消息其值有所不同 LPARAM lParam; DWORD time; 指定消息送至队列的时间 POINT pt;指定消息发送时屏幕光标的位置, 其数据类型POINT也是一个结构体 }MSG;附加信息与具体 消息号的值有关, 在Win中消息用 结构体MSG表示typedef struct tagPOINT {LONG x; LONG y; } POINT;(4) 消息null(4) 消息 VC中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息附属的分类,系统定义的消息宏前缀如下:BM 表示按钮控制消息 CB 表示组合框控制消息 DM 表示默认下压式按钮控制消息 EM 表示编辑控制消息 LB 表示列表框控制消息 SBM 表示滚动条控制消息 WM 表示窗口消息窗口管理消息 初始化消息 输入消息 系统消息 剪贴板消息 控制处理消息 控制通知消息 滚动条通知消息 非用户区消息 MDI消息 DDE消息 应用程序自定义的消息Windows编 程常用消息null二、Windows应用程序常用消息1. WM_LBUTTONDOWN:产生单击鼠标左键的消息此外,相似的消息还有: WM_LBUTTONUP:放开鼠标左键时产生; WM_RBUTTONDOWN:单击鼠标右键时产生; WM_RBUTTONUP:放开鼠标右键时产生; WM_LBUTTONDBLCLK:双击鼠标左键时产生; WM_RBUTTONDBLCLK:双击鼠标右键时产生。null2. WM_KEYDOWN:按下一个非系统键时产生的消息 系统键是指实现系统操作的组合键,例如Alt与某个功能键的组合以实现系统菜单操作等。3. WM_ CHAR:按下一个非系统键时产生的消息wParam 为按键的ASCII码 1Param 与WM_KEYDOWN的相同wParam:按下键的虚拟键码,用以标识按下或释放的键 1Param:记录了按键的重复次数、扫描码、转移代码、先前键的状态等信息。相似的消息还有WM_KEYUP, 在放开非系统键时产生如F1的虚拟键码 在Windows.h文 件中定义为VK_F1null4. WM_CREATE:由CreateWindow函数发出的消息wParam:未用 1Param:包含一个指向CREATESTRUCT数据结构的指针5. WM_CLOSE:关闭窗口时产生的消息wParam和1Param均未用。6. WM_DESTROY:由DestroyWiodow函数发出的消息wParam和1Param均未用。null7. WM_QUIT:由PostQuitMessage函数发出的消息退出应用程序时发出的消息 wParam:含退出代码,标识程序退出运行时的有关信息 1Param:未用8. WM_PAINTnull三、Windows中的事件驱动程序设计过程驱动方法计算平均成绩事件驱动方法计算平均成绩null四、Windows应用程序组成及编程步骤 1. 应用程序的组成一个完整的Windows应用程序通常由五种类型的文件组成。1.C语言源程序文件 2.头文件 3.模块定义文件 4.资源描述文件 5.项目文件 null2. 源程序组成结构1. 所有应用程序的入口,类似Main函数, 2. 完成一系列的定义和初始化,并产生消息循环WinMain和WinProc是 Windows应用程序的主体null(1) WinMain函数三个基本的组成部分:函数说明、初始化和消息循环WinMain函数注意!Win是多任务管理的,同一应用程序的多个窗口可能会同时存,Win系统对每个窗口的执行称为一个实例,并用一个实例句柄来唯一标识null(2) 初始化(a)窗口类定义 通过给窗口类数据结构WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。窗口类定义常用以下函数:nullLoadCursor的作用是在应用程序中加载一个窗口光标 HCURSOR LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName)光标资源所在的模 块句柄,NULL则使 用系统预定义光标光标资源名或系统 预定义光标标识名应用程序调用函数GetStockObject获取系统提供的背景刷 HBRUSH GetStockObject(int nBrush); null(b)注册窗口类Win系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用。窗口类的注册由函数RegisterClass()实现。 RegisterClass(&wndclass); //wndclass为窗口类结构 RegisterClass函数的返回为布尔值,注册成功则返回真null(c) 创建窗口实例创建一个窗口类的实例由函数CreateWindow()实现 函数原型如下: HWND Create Window ( LPCTSTR lpszClassName,∥窗口类名 LPCTSTR lpszTitle, ∥窗口标题名 DWORD dwStyle, ∥创建窗口的样式 int x,y, ∥窗口左上角坐标 int nWidth,nHeight, ∥窗口宽度和度高 HWND hwndParent, ∥该窗口的父窗口句柄 HWENU hMenu, ∥窗口主菜单句柄 HINSTANCE hInstance, ∥创建窗口的应用程序当前句柄 LPVOID lpParam ∥指向一个传递给窗口的参数值的指针 )nullnull(d)显示窗口窗口类的显示由ShowWindow和UpdateWindow函数实现。应用程序调用ShowWindow函数在屏幕上显示窗口 ShowWindow(hwnd,nCmdshow);//nCmdshow为窗口显示形式标识显示窗口后,应用程序调用UpdateWindow更新并绘制用户区,并发出WM_PAINT消息。 UpdateWindow(hwnd);null(3) 消息循环消息循环的常见格式如下: MSG Msg; … while (GetMessage (&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); }将消息的虚拟键 转换为字符信息将消息传送到 指定窗口函数将消息传递给窗口函数的相应过程处理Windows将产生的消息WinMain函数null2. 窗口函数WinProc WinProc函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。null窗口函数的一般形式如下: LRESULT CALLBACK WndProc( HWND hwnd, UINT messgae, WPARAM wParam,LPARAM lParam ) { … switch(message) ∥ message为标识的消息 { case … … break; … case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); } return(0); } 在消息处理程序段中一般都有对WM_DESTROY的处理,该消息是关闭窗口时发出的。它向应用程序发出WM_QUIT消息,请求退出处理函数: void PostQuitMessage(int nExitCode) //nExitCode为应用程序的退出代码为未定义处理过程的消息提供缺省处理null3.数据类型 在Windows.h中定义了Windows 应用程序中包含种类繁多的数据类型null4. 一些重要的数据结构MSG:包含一个消息的全部信息,是消息发送的格式WINDCLASS:包含一个窗口类的全部信息及属性POINT:定义了屏幕上或窗口中的一个点的X和 Y坐标RECT:定义了一个矩形区域及其左上角和右下角的坐标几种重要的结构null五、应用程序举例【例2-1】创建应用程序框架。本例的目的在于说明创建Windows应用程序的方法及过程#include //包含应用程序中所需的数据类型和数据结构的定义 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数说明 //--------------- 以下初始化窗口类 ---------------------- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow) { HWND hwnd ; MSG Msg ; WNDCLASS wndclass ; char lpszClassName[] = "窗口"; //窗口类名 char lpszTitle[]= "My_Windows"; //窗口标题名null //窗口类的定义 wndclass.style=0; //窗口类型为缺省类型 wndclass.lpfnWndProc=WndProc; //定义窗口处理函数 wndclass.cbClsExtra=0; //窗口类无扩展 wndclass.cbWndExtra=0; //窗口实例无扩展 wndclass.hInstance=hInstance; //当前实例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ; //窗口采用箭头光标 wndclass.hbrBackground=GetStockObject(WHITE_BRUSH); //窗口背景为白色 wndclass.lpszMenuName=NULL; //窗口中无菜单 wndclass.lpszClassName=lpszClassName ; //窗口类名为"窗口"null //--------------- 以下进行窗口类的注册 ------- if(!RegisterClass( &wndclass))//如果注册失败则发出警告 { MessageBeep(0) ; return FALSE ; }//---------------- 创建窗口 ------------------- hwnd=CreateWindow ( lpszClassName, //窗口类名 lpszTitle, //窗口实例的标题名 WS_OVERLAPPEDWINDOW, //窗口的风格 CW_USEDEFAULT, CW_USEDEFAULT, //窗口左上角坐标为缺省值 CW_USEDEFAULT, CW_USEDEFAULT,, //窗口的高和宽为缺省值 NULL, //此窗口无父窗口 NULL, //此窗口无主菜单 hInstance, //创建此窗口的应用程序的当前句柄 NULL //不使用该值 );null//--------------- 显示窗口 ---------------------- ShowWindow( hwnd, nCmdShow) ;//-------------- 绘制用户区 --------------------- UpdateWindow(hwnd);//----------------- 消 息 循 环 ---------------------- while( GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage( &Msg) ; DispatchMessage( &Msg) ; } return Msg.wParam; //消息循环结束即程序终止时将信息返回系统 }null/窗口函数 LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch(message) { case WM_DESTROY: PostQuitMessage(0); default: //缺省时采用系统消息缺省处理函数 return DefWindowProc(hwnd,message,wParam,lParam); } return(0); }调用PostQuitMessage 发出WM_QUIT消息
/
本文档为【visual+c++6.0可视化编程1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索