欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《图形开发界面》PPT课件.ppt

    • 资源ID:5580856       资源大小:950KB        全文页数:85页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《图形开发界面》PPT课件.ppt

    1,Linux图形界面开发,嵌入式GUI概述MiniGUI DEMOMiniGUI的编译和安装MiniGUI程序框架MiniGUI编程基础,GUI(Graphics User Interface),图形用户界面,借助菜单、按钮等标准界面元素和鼠标进行操作,帮助用户方便地向计算机系统发出指令,并将系统运行的结果同样以图形方式显示给用户。嵌入式GUI:轻型、占用资源少、高性能、高可靠性、可配置,5.1嵌入式GUI概述,5.3 MiniGUI概述,MiniGUI(http:/)原是由魏永明主持和开发的一个自由软件项目,现由北京飞漫软件技术有限公司维护并开展后续开发。遵循GPL 条款支持操作系统Linux、uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX 等MiniGUI 为应用程序定义了一组轻量级的窗口和图形设备接口。,手机/PDA,MiniGUI 典型应用,数字媒体/机顶盒,MiniGUI 典型应用,工控仪表,MiniGUI 典型应用,其他,MiniGUI 典型应用,miniGUI系统架构,程序架构分析:,结构体初始化,创建窗口,显示窗口,消息循环,清理资源,MSG_CREATE,MSG_PAINT,MSG_CLOSE,消息处理函数,1)头文件(前四个为必须)#include#include#include#include#include common.h 包括 MiniGUI常用的宏及数据类型的定义。minigui.h 包含了全局的和通用的接口函数以及某些杂项函数的定义。gdi.h包含了绘图函数的接口的定义。window.h 包含了窗口有关的宏、数据类型、数据结构的定义以及函数接口声明。control.h 包含了 所有内建控件的接口定义。,程序架构分析:,2)MiniGUI程序入口点 int MiniGUIMain(int argc,const char*argv)函数原形:int MiniGUIMain(int argc,const char*argv)参数argc 和argv 与C 程序main 函数的参数argc 和argv 的含义是一样的,分别为命令行参数个数和参数字符串数组指针。main 函数已经在 MiniGUI的函数库中定义了,该函数在进行一些 MiniGUI的初始化工作之后调用 MiniGUIMain函数。,程序架构分析:,3)设置主窗口属性 MAINWINCREATE 结构描述/窗口信息 CreateInfo.dwStyle=WS_VISIBLE|WS_BORDER|WS_CAPTION;/风格 CreateInfo.dwExStyle=WS_EX_NONE;CreateInfo.spCaption=Hello,world!;/标题名 CreateInfo.hMenu=0;/无菜单 CreateInfo.hCursor=GetSystemCursor(0);CreateInfo.hIcon=0;CreateInfo.MainWindowProc=HelloWinProc;/消息处理过程函数 CreateInfo.lx=0;CreateInfo.ty=0;CreateInfo.rx=320;CreateInfo.by=240;CreateInfo.iBkColor=COLOR_lightwhite;CreateInfo.dwAddData=0;CreateInfo.hHosting=HWND_DESKTOP;/托管窗口,程序架构分析:,3)设置主窗口属性 MAINWINCREATE 结构描述CreateInfo.dwStyle=WS_VISIBLE|WS_BORDER|WS_CAPTION;设置主窗口风格,这里把窗口设为初始可见的,并具有边框和标题栏。CreateInfo.deExStyle=WS_EX_NONE;设置主窗口的扩展风格,该窗口没有扩展风格。CreateInfo.spCaption=“HelloWorld”设置主窗口的标题为”HelloWorld”。,程序架构分析:,3)设置主窗口属性 MAINWINCREATE 结构描述CreateInfo.hMenu=0;设置主窗口的主菜单,该窗口没有主菜单。CreateInfo.hCursor=GetSystemCursor(0);设置主窗口的光标为系统缺省光标。CreateInfo.hIcon=0;设置主窗口的图标,该窗口没有图标。,程序架构分析:,3)设置主窗口属性 MAINWINCREATE 结构描述CreateInfo.iBkColor=PIXEL_lightwhite;设置主窗口的背景色为白色,PIXEL_lightwhite 是 MiniGUI预定义的象素值。CreateInfo.dwAddData=0;设置主窗口的附加数据,该窗口没有附加数据。CreateInfo.hHosting=HWND_DESKTOP;设置主窗口的托管窗口为桌面窗口。,程序架构分析:,3)设置主窗口属性 MAINWINCREATE 结构描述CreateInfo.MainWindowProc=HelloWinProc;设置主窗口的窗口过程函数为 HelloWinProc,所有发往该窗口的消息由该函数处理。CreateInfo.lx=0;CreateInfo.ty=0;CreateInfo.rx=320;CreaetInfo.by=240;设置主窗口在屏幕上的位置,该窗口左上角位于(0,0),右下角位于(320,240)。,程序架构分析:,4)创建和显示主窗口/创建主窗口 hMainWnd=CreateMainWindow(显示窗口在屏幕上。,程序架构分析:,5)进入消息循环 MiniGUI 对 MiniGUI程序维护一种名叫消息队列的数据结构。在发生事件之后,MiniGUI 将事件转换为一个消息,并将消息放入目标程序的消息队列之中。应用程序现在的任务就是执行消息循环代码,不断地从消息队列中取出消息,进行处理。/消息循环 while(GetMessage(,程序架构分析:,6)窗口过程函数 static int HelloWinProc(HWND hWnd,int message,WPARAM wParam,LPARAM lParam)HDC hdc;RECT rc;char msg_text30;switch(message)/创建时发送的消息,用来做初始化处理,这里是初始化字符串内容 case MSG_CREATE:break;/窗口绘画时发送的消息,用来在界面绘图或者输出文字/注意这里的return 0 表明不需要进入默认处理函数中。case MSG_PAINT:printf(BeginPaint.n);hdc=BeginPaint(hWnd);TextOut(hdc,10,50,Hello,world!);EndPaint(hWnd,hdc);printf(EndPaint.n);return 0;/结束时一些处理函数,主要是销毁主窗口和发送quit消息以退出消息循环。case MSG_CLOSE:DestroyMainWindow(hWnd);PostQuitMessage(hWnd);return 0;return DefaultMainWinProc(hWnd,message,wParam,lParam);,程序架构分析:,6)窗口过程函数 在 helloworld.c程序中,窗口过程是HelloWinProc。CreateMainWindow 函数根据 MAINWINCREATE 结构类型的参数中指定的窗口过程创建主窗口。窗口过程函数由 MiniGUI进行调用。窗口过程函数不予处理的消息应该传给 DefaultMainWinProc 函数进行缺省处理。,程序架构分析:,SendMessageMSG_CREATE,CREATEMAINWINDOW,MSG_PAINT,hWnd,SHOWWINDOW,PostMessageMSG_PAINT,GetMessage,WndProc,主窗口创建时消息动作过程:,程序架构分析:,MSG_CLOSE,hWnd,MSG_Derstroy,hWnd,GetMessage,WndProc,底层事件响应用户单击关闭按钮,DestroyMainWindowPostQuitWindow,hWnd,MSG_QUIT,QUIT退出,主窗口销毁时消息动作过程:,程序架构分析:,7)屏幕输出MSG_PAINT消息-进行屏幕输出。case MSG_PAINT:hdc=BeginPaint(hWnd);TextOut(hdc,60,60,Hello world!);EndPaint(hWnd,hdc);return 0;,程序架构分析:,8)程序的退出 单击窗口右上角关闭按钮,发送 MSG_CLOSE 消息。case MSG_CLOSE:DestroyMainWindow(hWnd);PostQuitMessage(hWnd);return 0;,程序架构分析:,9)程序编译MiniGUI-Threads 模式:$gcc o helloworld helloworld.c lpthread lminiguipthread 线程库minigui minigui支持库,程序架构分析:,10)程序执行./helloworld,程序架构分析:,MiniGUI函数库组成,libminigui:核心库,标准控件libmgext:扩展库,一些有用的控件 libvcongui:虚拟控制台窗口,MiniGUI运行模式,MiniGUI-ThreadsMiniGUI-LiteMiniGUI-Standalone注意:以下讲述基于MiniGUI1.6;MiniGUI 2.0.x 中Lite模式升级为Processes 模式。默认模式是MiniGUI-Threads。,1)提供了完备的多窗口机制和消息传递机制。2)提供常用的控件类。3)对话框和消息框支持。4)其它 GUI 元素,包括菜单、加速键、插入符、定时器等。5)界面皮肤支持。,MiniGUI 的主要特征(1/4):,6)支持低端显示设备(比如单色 LCD)和高端显示设备(比如彩色显示器。7)Windows 的资源文件支持,如位图、图标、光标等。8)各种流行图像文件的支持。9)多字符集和多字体支持。10)多种键盘布局的支持。,MiniGUI 的主要特征(2/4):,11)汉字(GB2312)输入法支持。12)针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。13)层的支持。(MiniGUI-Lite 版本)。14)提供快速和增强的位块操作,视频加速支持以及 Alpha 混合等功能。,MiniGUI 的主要特征(3/4):,15)增强的新 GDI 函数。16)图形抽象层(GAL)以及输入抽象层(IAL)。,MiniGUI 的主要特征(4/4):,轻型、占用资源少 高性能 高可靠性 可伸缩性强 跨操作系统支持 可配置,MiniGUI 优势:,MiniGUI编程基础,MiniGUI窗口MiniGUI消息及消息队列MiniGUI对话框MiniGUI菜单MiniGUI基本控件按钮静态框编辑框,窗口,窗口是屏幕上的一个矩形区域。应用程序的可视部分由一个或多个窗口构成。窗口系统控制窗口的位置、大小、和可见区域。一个应用程序窗口一般包括如下部分:一个可视的边界一个窗口ID,客户程序使用该ID操作窗口,“窗口句柄”一些其它特性:高、宽、背景色等可能有菜单和滚动条等附加窗口元素,窗口,屏幕上的重叠窗口通常具有如下的关系:窗口一般组织为层次体系结构的形式(或者说,树的形式)。根窗口(root window)是所有窗口的祖先,占满整个屏幕的表面,也称为桌面窗口。除了根窗口以外的所有窗口都有父窗口,每一个窗口都可能有子窗口、兄弟窗口、祖先窗口和子孙窗口等子窗口含在父窗口内,同一个父窗口内的子窗口为同级窗口。窗口有从属关系,也就是说,某些窗口的生命周期和可见性由它的所有者决定。父窗口通常拥有它们的子窗口。,Desktop,主窗口1,主窗口2,控件(子窗口),控件(子窗口),控件(子窗口),对话框1,窗口体系,线程1,线程2,MiniGUI 中有三种窗口类型:主窗口、对话框和控件窗口(子窗口)。每一个MiniGUI应用程序一般都要至少创建一个主窗口,作为应用程序的主界面或开始界面。主窗口通常包括一些子窗口,这些子窗口通常是控件窗口,也可以是自定义窗口类。应用程序还会创建其它型的窗口,例如对话框。对话框本质上就是主窗口,应用程序一般通过对话框提示用户进行输入操作。,主窗口:,主窗口没有很精确的定义,目前可以认为其特征主要有父窗口为Desktop的,拥有子窗口,在创建后可以进入消息循环。MiniGUI 为每个托管窗口为Desktop的主窗口建立单独的消息队列,在该主窗口上派生出的主窗口、对话框及控件(子窗口)均使用同一消息队列。在调用 MiniGUIMain之前,MiniGUI 启动桌面窗口Desktop。桌面窗口作为 MiniGUI 的窗口管理器而存在,也是事实上根窗口。,主窗口:,MAINWINCREATE结构体指定窗口信息:窗口风格窗口标题窗口菜单窗口图标窗口背景色,主窗口属性:,主窗口属性:,主窗口风格:,WS_BORDERWS_CAPTIONWS_VISIBLE,WS_VISIBLE,简而言之,回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,就可以说这是回调函数。使用回调函数实际上就是在调用某个函数(通常是类API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数,跟具体使用的类API函数有关,一般在帮助中有说明回调函数的参数和返回值等。,回调函数:,主窗口过程实际是一个回调函数,一般由 DispatchMessage 函数调用,用来处理应用的消息。定义:int TestMainWinProc(HWND hWnd,int message,WPARAM wParam,LPARAM lParam);四个入口参数:消息的目标窗口句柄、消息、消息的 WPARAM(即unsigned int)型参数和 LPARAM(即long int)型参数。在 32 位系统中,消息的两个参数实际是等长度的。主窗口的窗口过程处理应用感兴趣的消息,将其他消息传递给 DefaultMainWinProc 函数处理。,主窗口过程:,消息和消息队列,MiniGUI 是一个图形用户界面支持系统,通常的GUI 编程概念均适用于MiniGUI 编程,如窗口和事件驱动编程等。键盘和鼠标动作产生事件,这些事件通常被发送到具有焦点的窗口,由该窗口相关联的例程来处理。焦点和光标的概念用于管理输入设备和输入事件的传送。应用程序可以捕捉鼠标光标并获取光标事件、键盘输入焦点和键盘事件。应用程序可通过调用一些系统函数来要求重绘窗口或窗口的某一部分,这些事件通常由窗口例程来处理。,事件驱动编程:,消息被如下定义():typedef struct _MSG HWND hwnd;/窗口句柄 int message;/消息类型 WPARAM wParam;/消息参数 LPARAM lParam;/消息参数 struct timeval time;void*pAdd;MSG;typedef MSG*PMSG;,消息结构的定义:,系统消息:MSG_IDLE、MSG_TIMER、MSG_FDEVENT等;对话框消息:MSG_COMMAND、MSG_INITDIALOG、MSG_SETTEXT等;窗口绘制消息:MSG_PAINT、MSG_ERASEBKGND等;窗口创建和销毁消息:MSG_CREATE、MSG_DESTROY、MSG_CLOSE等;键盘和鼠标消息:MSG_KEYDOWN、MSG_CHAR、MSG_LBUTTONDOWN等;鼠标/键盘后处理消息:MSG_SETCURSOR、MSG_SETFOCUS、MSG_KILLFOCUS等;用户自定义消息 MSG_USER,消息的种类:,消息队列:系统中用于存储消息的一块内存区域,每个消息存储在一个消息结构中。MiniGUI有两种向窗口过程发送消息的办法:把消息投递到一个先进先出的消息队列中。大多数消息。通过消息发送函数直接调用窗口过程函数。需立即处理,如MSG_ERASEBKGND消息。,消息队列:,MiniGUI 为每个托管窗口为Desktop的主窗口建立单独的消息队列,在该主窗口上派生出的主窗口、对话框及控件(子窗口)均使用同一消息队列。消息队列中存储大部分消息,如底层的键盘和鼠标消息。还有上层逻辑消息等等。大部分消息要经过消息队列存储。,消息处理,MiniGUI-Threads 中每个线程创建的第一个主窗口,其托管窗口必须是桌面,即HWND_DESKTOP,该线程的其他窗口,必须由属于同一线程的已有主窗口作为托管窗口。系统在托管窗口为 HWND_DESKTOP 时创建新的消息队列,而在指定非桌面的窗口作为托管窗口时,使用该托管窗口的消息队列。,窗口消息队列的托管窗口,消息循环 minigui中大部分动作要在消息循环中调用消息处理函数来完成。实际上消息循环就是不断的从消息队列中取出消息,直至遇到MSG_QUIT才退出该次消息循环。while(GetMessage(Msg 变量是类型为 MSG的结构,MSG结构在 window.h中。,消息处理:,窗口过程函数 在 helloworld.c程序中,窗口过程是HelloWinProc。CreateMainWindow 函数根据 MAINWINCREATE 结构类型的参数中指定的窗口过程创建主窗口。窗口过程函数由 MiniGUI进行调用,是一个回调函数。窗口过程函数不予处理的消息应该传给 DefaultMainWinProc 函数进行缺省处理。,消息处理:,窗口过程函数 窗口过程函数总是定义为如下形式:static int HelloWinProc(HWND hWnd,int message,WPARAM wParam,LPARAM lParam)第一个参数 hWnd是接受消息的窗口的句柄。第二个参数标识窗口所收到消息的整数值。最后两个参数都是 32位的消息参数。,消息处理:,SendMessageMSG_CREATE,CREATEMAINWINDOW,MSG_PAINT,hWnd,SHOWWINDOW,PostMessageMSG_PAINT,GetMessage,WndProc,主窗口创建时消息动作过程:,MSG_CLOSE,hWnd,MSG_Derstroy,hWnd,GetMessage,WndProc,底层事件响应用户单击关闭按钮,DestroyMainWindowPostQuitWindow,hWnd,MSG_QUIT,QUIT退出,主窗口销毁时消息动作过程:,投递(邮寄)消息:把消息复制到消息队列中。发送消息:直接把消息发送到窗口过程函数。,发送和投递消息:,发送和投递消息:,电话,发送消息,投递消息,邮箱,PostMessage 立即返回。“邮寄”PostSyncMessage 向不同的线程消息队列邮寄消息,消息被处理之后返回,同步消息。“邮寄”SendMessage 消息处理完成之后返回。同线程“发送”。不同线程“邮寄”(PostSyncMessage)。SendNotifyMessage 立即返回,不允许丢失。“邮寄”。SendAsyncMessage 异步消息。“发送”。,发送和投递消息:,对话框,简单而言,模态对话框就是显示之后,用户不能再切换到其他主窗口(同线程内)进行工作的对话框,而只能在关闭之后,才能使用其他的主窗口。MiniGUI 中,使用 DialogBoxIndirectParam 函数建立的对话框就是模态对话框。实际上,该对话框首先根据模板建立对话框,然后禁止其托管主窗口,并在主窗口的 MSG_CREATE 消息中创建控件,之后发送 MSG_INITDIALOG消息给回调函数,最终建立一个新的消息循环,并进入该消息循环,直到程序调用 EndDialog函数为止。非模态可以切换,不禁用托管主窗口。,模态与非模态,编程实例,对话框演示程序,对话框是一种特殊的主窗口,应用程序一般通过DialogBoxIndirectParam 函数创建对话框。需准备对话框模板和对话框的窗口过程函数。按下“确定”按钮或者关闭对话框时,调用EndDialog 用来结束对话框过程。DestroyAllControls 用来销毁对话框(包括主窗口)中的所有子控件。,对话框:,对话框是一种特殊的主窗口,应用程序一般通过DialogBoxIndirectParam 函数创建对话框:int GUIAPI DialogBoxIndirectParam(PDLGTEMPLATE pDlgTemplate,HWND hOwner,WNDPROC DlgProc,LPARAM lParam);该函数建立的对话框称为模态对话框。用户需要为此函数准备对话框模板和对话框的窗口过程函数。,模态对话框创建:,在 MiniGUI 中,用两个结构来表示对话框模板:控件数组和对话框模板。先介绍一下控件数组。typedef structchar*class_name;/control classDWORD dwStyle;/control styleint x,y,w,h;/control position in dialogint id;/control identifierconst char*caption;/control captionDWORD dwAddData;/additional dataDWORD dwExStyle;/control extended style CTRLDATA;typedef CTRLDATA*PCTRLDATA;,对话框模板:,#define IDC_PROMPTINFO100#define IDC_OK 110/对话框模版,设置各个控件的属性static CTRLDATA CtrlInitProgress=static,WS_VISIBLE|SS_SIMPLE,10,10,380,16,IDC_PROMPTINFO,你好!,0,button,WS_TABSTOP|WS_VISIBLE|BS_DEFPUSHBUTTON,170,70,60,25,IDC_OK,确定,0;,对话框模板:,对话框模板typedef structDWORD dwStyle;/dialog box styleDWORD dwExStyle;/dialog box extended styleint x,y,w,h;/dialog box positionconst char*caption;/dialog box captionHICON hIcon;/dialog box iconHMENU hMenu;/dialog box menuint controlnr;/number of controlsPCTRLDATA controls;/poiter to control arrayDWORD dwAddData;/addtional data,must be zero DLGTEMPLATE;typedef DLGTEMPLATE*PDLGTEMPLATE;,对话框模板:,/对话框模板,设置对话框的属性static DLGTEMPLATE DlgInitProgress=WS_BORDER|WS_CAPTION,WS_EX_NONE,120,150,400,130,DEMO,0,0,2,NULL,0;,对话框模板:,结构 CTRLDATA 用来定义控件,DLGTEMPLATE 用来定义对话框本身。在程序中,应该首先利用 CTRLDATA 定义对话框中所有的控件,并用数组表示。控件在该数组中的顺序,也就是对话框中用户按 TAB 键时的控件切换顺序。然后定义对话框,指定对话框中的控件数目,并指定 DLGTEMPLATE 结构中的 controls 指针指向定义控件的数组。,对话框模板:,在定义了对话框模板数据之后,需要定义对话框的回调函数,并调用DialogBoxIndirectParam 函数建立对话框。对话框回调函数是一类特殊的主窗口回调函数。用户在定义自己的对话框回调函数时,需要处理 MSG_INITDIALOG 消息。该消息是在 MiniGUI 根据对话框模板建立对话框以及控件之后,发送到对话框回调函数的。该消息的 lParam 参数包含了由DialogBoxIndirectParam 函数的第四个参数传递到对话框回调函数的值。用户可以利用该值进行对话框的初始化,或者保存起来以备后用。,对话框回调函数,static int InitDialogBoxProc(HWND hDlg,int message,WPARAM wParam,LPARAM lParam)switch(message)/注意这个和主窗口创建的区别,这个是对话框特有的,在主窗口基础上增添的。和CREATE一个时机发送出来的。case MSG_INITDIALOG:SetWindowText(GetDlgItem(hDlg,IDC_PROMPTINFO),您好!);return 1;/处理通知消息 case MSG_COMMAND:switch(wParam)case IDOK:case IDCANCEL:EndDialog(hDlg,wParam);break;break;return DefaultDialogProc(hDlg,message,wParam,lParam);,对话框回调函数,static void InitDialogBox(HWND hWnd)/制定对话框模版 DlgInitProgress.controls=CtrlInitProgress;DialogBoxIndirectParam(,对话框创建,提供和 Win32 完全兼容的消息框调用接口。int MessageBox(HWND hwnd,LPCTSTR lpsztext,LPCSTR lpsztitle,UINT ustyle);MessageBox(hDlg,你好!,确认,MB_OK|MB_ICONINFORMATION);,消息框:,消息框:,基本控件,控件风格大小写、密码风格、自动换行、对齐方式等控件消息改变大小或位置、读取写入数据等控件的通知消息鼠标、键盘、焦点等操作和变化,控件:要素,在 MiniGUI中,通过调用 CreateWindow 函数(CreateWindow 其实是CreateWindowEx 函数的宏),可以建立某个控件类的一个实例。控件类既可以是预定义 MiniGUI 控件类,也可以是用户自定义的控件类。CreateWindow 函数建立一个子窗口,即控件。在对话框中,用对话框模版来设定参数,由对话框创建函数负责自动创建。,创建控件,hwnd=CreateWindow(CTRL_STATIC,/类名“click me!”,/标题名或者名称 WS_VISIBLE|SS_CENTER|SS_NOTIFY,/风格 ID_STATIC,/ID号 80,100,200,20,/位置与宽度和长度 hDlg,/父句柄 0);/附属数据它指定了控件类(class_name)、控件标题(caption)、控件风格(style)、控件的标识符(id)、以及窗口的初始位置和大小(x,y,w,h)。该函数同时指定子窗口的父窗口(parent)。参数 add_data 用来向控件传递其特有数据的指针,该指针所指向的数据结构随控件类的不同而不同。,创建控件,控件具有自己的窗口风格定义,需要在创建控件时指定需要的风格,不同的风格将使得控件具有不同的表象和行为。获取或设置控件的状态、内容等。一般可通过向控件发送一些通用或者特有的消息来完成。控件内部发生某种事件时,会通过通知消息通知其父窗口。通知消息一般通过MSG_COMMAND 消息发送,该消息的 wParam 参数由子窗口标识符和通知码组成,lParam 参数含有发出通知消息的控件句柄。也可以为控件设置一个通知消息的回调函数,定义回调函数就不能发送通知消息。,控件编程涉及的内容,控件常见风格,对话框是一种特殊的主窗口,应用程序一般通过DialogBoxIndirectParam 函数创建对话框。需准备对话框模板和对话框的窗口过程函数。按下“确定”按钮或者关闭对话框时,调用EndDialog 用来结束对话框过程。DestroyAllControls 用来销毁对话框(包括主窗口)中的所有子控件。,对话框:,在程序中,我们首先要建立菜单,然后将菜单句柄传递给创建主窗口的函数CreateMainWindow。当主窗口显示出来时,我们创建的菜单就会在标题栏下显示出来。当用户用鼠标或者 Alt 键激活菜单并选择了菜单项后,该菜单所依附的窗口会收到MSG_COMMAND 消息。菜单的创建需要两个过程:建立菜单栏 建立菜单栏中各个菜单的子菜单,菜单的创建,MENUITEMINFO 结构是用来操作菜单项的核心数据结构,其定义如下:typedef struct _MENUITEMINFO UINT mask;/UINT type;/菜单项类型,普通文字,位图,位图与普通文字等UINT state;/菜单项的状态,灰化,禁止,含对勾,不含对勾等int id;/菜单项的ID,唯一标识此菜单项HMENU hsubmenu;/是否含有子菜单PBITMAP uncheckedbmp;/如果菜单项是位图菜单,则该位图用于显示选定状态的菜单PBITMAP checkedbmp;/如果菜单项是位图菜单,则该位图用于显示非选定状态的菜单DWORD itemdata;/和菜单项关联的私有数据DWORD typedata;/用来传递菜单项的文本数据UINT cch;/用来表示字符串的最大长度 MENUITEMINFO;typedef MENUITEMINFO*PMENUITEMINFO;,MENUITEMINFO 结构,基本控件,和 Win32 在源代码级上的完全兼容。但不支持某些复杂的控件。静态控件按钮控件编辑控件列表控件组合框控件等,控件风格大小写、密码风格、自动换行、对齐方式等控件消息改变大小或位置、读取写入数据等控件的通知消息鼠标、键盘、焦点等操作和变化,控件:要素,

    注意事项

    本文(《图形开发界面》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开