高级WIN32控件丰富界面.ppt_第1页
高级WIN32控件丰富界面.ppt_第2页
高级WIN32控件丰富界面.ppt_第3页
高级WIN32控件丰富界面.ppt_第4页
高级WIN32控件丰富界面.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 使用高级级WIN32控件丰富界面 1 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo l本章主要知识点: l窗体的菜单应用 l窗体的工具栏的使用 l窗体的状态栏的使用 2 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 窗体菜单单使用案例 3 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 窗体菜单单使用案例 l1、菜单资源的添加: 在ResourcView卡中选择操作插入资源MENU l2、菜单资源的编辑 如同一般菜单的编辑方式样 l3、与菜单有关的结构体类型:MENUITEMINFO 4 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo ltypedef struct tagMENUITEMINFO l UINT cbSize; / 结构的大小,字节 l UINT fMask;/重新获取或设置成员 l UINT fType; /菜单项类型 l UINT fState; /菜单项的状态. l UINT wID; /应用程序定义16位的值来识别那个菜单项 l HMENU hSubMenu; /下拉菜单或相关联的子菜单的菜单项的句柄 l HBITMAP hbmpChecked; /如果条目被选中,这个显示项是位图的 句柄 l HBITMAP hbmpUnchecked; l DWORD dwItemData; /应用程序定义的菜单项相关联的值 l LPTSTR dwTypeData; /菜单项的内容 l UINT cch; /菜单项文本的长度息 l MENUITEMINFO, FAR *LPMENUITEMINFO; 5 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lfMask 重新获获取或设设置成员员,这这个成员员可以使用一个或多个这这些值值 MIIM_CHECKMARKS 重新获获取或设设置hbmpChecked和 hbmpUnchecked成员员 MIIM_DATA 重新获获取或设设置dwItemData成员员 MIIM_ID 重新获获取或设设置wID成员员 MIIM_STATE 重新获获取或设设置fState成员员 MIIM_SUBMENU 重新获获取或设设置hSubMenu成员员 MIIM_TYPE 重新获获取或设设置fType和dwTypeData成员员 6 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lfState l 菜单项的状态.这个成员可以是一个或多个的这些值: l MFS_CHECKED 复选的菜单项.至于更多关于菜单项选中的信 息,看hbmpChecked成员. l MFS_DEFAULT 指定那个是默认的菜单项。一个菜单仅仅只 可以包含一个默认的菜单项,粗体显示那个。 l MFS_DISABLED 禁止菜单项所以它不能被选择.但是不使它 变灰. l MFS_ENABLED 激活菜单项所以它可以被选择。这是默认的 状态. l MFS_GRAYED 禁止菜单项和变灰它,所以它不可以被选择. l MFS_HILITE 加亮菜单项 l MFS_UNCHECKED 取消复选菜单项.至于更多关于菜单项 unchecked信息,看hbmpUnchecked成员变量 l MFS_UNHILITE 移除来自菜单项的加亮区.这是默认状态. 7 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo l4、菜单中相关的成员函数的使用 l菜单的使用过程: 1、添加菜单资源 2、定义菜单句柄 HMENU 3、加载菜单资源 4、设置窗体菜单 l加载菜单LoadMenu lHMENU LoadMenu(HINSTANCE hlnstance,LPCTSTR lpMenuName); lhlnstance:含有被加载菜单资源的事例模块的句柄。 lLpMenuName:指向含有菜单资源名的以空结束的字符串的指针。 l返回值:如果函数调用成功,返回值是菜单资源句柄;如果函数调用 失败,返回值是NULL。 8 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo l设置窗体菜单SetMenu lBOOL SetMenu(HWND hWnd,HMENU hMenu); l hWnd:菜单被分配到其中的窗口的句柄。 lhMenu:新菜单的句柄。如果菜单参数为NULL,则窗口的当前菜单 被删除。 CMenu:GetMenuItemInfo BOOL GetMenuItemInfo(UINT nIDItem, LPMENUITEMINFO lpMenuItemInfo, BOOL ByPos=FALSE) nIDItem 要获取信息菜单项的标识符或位置。 llpMenuItemInfo 指向MENUITEMINFO结构的指针,如联机文档“平 台SDK”中所述,它包含了菜单的有关信息。 l ByPos 该值指定了nIDItem的意义。缺省情况下,ByPos是FALSE, 它指定uItem为菜单项标识符。若ByPos没有设置为FALSE,那么它 标识了菜单项的位置。 9 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 弹弹出式菜单单使用实实例 l弹出式菜单和普通窗体菜单的加载和属性设置的 方法完全相同 l在窗体上右击鼠标,通常可引发 “WM_CONTEXTMENU”消息,可在此消息中处理 函数显示弹出式菜单 l弹出式菜单函数:TrackPopupMenu lBOOL TrackPopupMenu(HMENU hMenu, UINT uFlags,int x,int y,int nReserved, HWND hWnd,CONST RECT* prcRect); 10 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lhMenu:被显示的快捷菜单的句柄。此句柄可为调用CreatePopupMenu创建的新快捷菜单的句柄 ,也可以为调用GetSubMenu取得的与一个已存在菜单项相联系的子菜单的句柄。 luFlags:一种指定功能选项的位标志。用下列标志位之一来确定函数如何水平放置快捷菜单: l TPM_CENTERALIGN:若设置此标志,函数将按参数x指定的坐标水平居中放置快捷菜单。 l TPM_LEFTALIGN:若设置此标志,函数使快捷菜单的左边界与由参数X指定的坐标对齐。 l TPM_RIGHTALIGN:若设置此标志,函数使快捷菜单的右边界与由参数X指定的坐标对齐。 l 用下列标志位之一来确定函数如何垂直放置快捷菜单: l TPM_BOTTOMALIGN:若设置此标志,函数使快捷菜单的下边界与由参数y指定的坐标对齐。 l TPM_TOPALIGN:若设置此标志,函数使快捷菜单的上边界与由参数y指定的坐标对齐。 l TPM_VCENTERALIGN;若设置此标志,函数将按参数y指定的坐标垂直居中放置快捷菜单 l用下列标志位之一来确定在菜单没有父窗口的情况下用户的选择: l TPM_NONOTIFY:若设置此标志,当用户单击菜单项时函数不发送通知消息。 l TPM_RETURNCMD;若设置此标志;函数将用户所选菜单项的标识符返回到返回值里。 l (补充:当TrackPopupMenu的返回值大于0,就说明用户从弹出菜单中选择了一个菜单。以返 回的ID号为参数wParam的值,程序给自己发送了一个WM_SYSCOMMAND消息) l 用下列标志位之一来确定在快捷菜单跟踪哪一个鼠标键: l TPM_LEFTBUTTON:若设置此标志,用户只能用鼠标左键选择菜单项。 l TPM_RIGHTBUTTON:若设置此标志,用户能用鼠标左、右键选择菜单项。 11 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lModifyMenu l函数功能:该参数修改已存在的菜单项,并指定菜单项的内容、外观 和性能。 lBOOL ModifyMenu(HMENU hMnu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR IpNewltem); lhMnu:将被修改的菜单的句柄。 luPosition:指定将被修改的菜单项,其含义由参数UFlags决定。 lUFlags:指定控制参数uPosition的解释的标志、菜单项的内容、外 观和性能。 MF_BYCOMMAND:表示uPostion给出菜单项的标识符。如果 MF_BYCOMMAND和MF_BYPOSITION都没被指定则MF_BYCOMMAND 为缺省的标志。 MF_BYPOSITION:表示uPosition给出菜单项基于零的相对位置。 lUIDNewltem:指定被修改菜单项的标识符,或者当参数uFlags设置 为MF_POPUP时,指定下拉式菜单或子菜单的句柄。 llpNewltem:指定被修改菜单项的内容。其含义依赖于参数UFlags是 否包含标志MF_BITMAP,MF_OWNERDRAW或MF_STRING。 12 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lCheckMenuItem l函数功能:该函数取得与指定菜单项相联系的菜单标志。如果该菜单项打开了一个子 菜单,该函数也返回子菜单里的菜单项数。 lDWORD CheckMenuItem(HMENU hmenu, UINT uIDCheckItem, UINT uCheck); lhmenu:含有其菜单项的标志将被提取得的菜单的句柄。 luIDCheckItem:制定要修改的菜单项。 luCheck:表示标记的状态。此参数可取下列值之一: l MF_BYCOMMAND:表示参数uId给出菜单项的标识符。如果MF_BYCOMMAND和 MF_BYPOSITION都没被指定,则MF_BYCOMMAND是缺省值。 l MF_BYPOSITION:表示参数uId给出菜单项相对于零的位置。 l MF_CHECKED:放置选取标记于菜单项旁边(只用于下拉式菜单、子菜单或快捷菜 单)。 l MF_DISABLED:使菜单项无效。MF_GRAYED:使菜单项无效并交灰。MF_HILITE :加亮菜单项。 l MF_MENUBARBREAK:对下拉式菜单、子菜单和快捷菜单,新列和旧列由垂直线隔 开,其余功能同MF_MENUBREAK标志。 l MF_MENUBREAK:将菜单项放于新行(对菜单条)或无分隔列地放于新列(对下拉 式菜单、子菜单或快捷菜单)。 l MF_SEPARATOR:创建一个水平分隔线(只用于下拉式菜单、子菜单或快捷菜单) 。 13 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 工具栏栏使用实实例 14 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo l工具栏的封装类:CToolBar l使用工具栏的步骤: l1、创建工具栏 CreateEx l2、加载工具栏 LoadToolBar lvirtual BOOL CreateEx( CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP) lBOOL LoadToolBar( LPCTSTR lpszResourceName ); l函数CWnd:RepositionBars() l功能是将可用的客户区区域信息放到消息WM_SIZEPARENT的消息参 数里,然后枚举本窗口的所有子窗口,给每个子窗口 都发送这个消 息,每个响应这个消息的子窗口都会把可用客户区切去一块。最后把 那个特定的子窗口的尺寸和位置调整到刚好放在最后剩下的可用区域 里。 15 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 256色工具栏栏使用实实例 16 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo l本章要点: l将256色以上的图片粘贴到工具栏中 l1、插入一个工具栏 l2、插入位图 l3、在程序中处理图像的加载 17 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lBOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow ); lnFlags: lILC_COLOR24 :图片为24位真彩色 lILC_MASK:添加的图图片显显示时时要让让指定的颜颜色透明 lnInitial:列表的初始大小 lnGrow:动态调整大小时的增量 lAdd :将位图添加到图片列表,图片列表按创建时指定的 大小来切分图片 lint Add( CBitmap* pbmImage, COLORREF crMask ); 18 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo 状态栏输态栏输出信息实实例 19 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo l状态栏实际上是个窗口,一般分为几个窗格,每个窗格显 示不同的信息。 lAppWizard会为应用程序自动创建一个状态栏,该状态栏 包括几个窗格,分别用来显示状态栏提示和CAPS LOCK 、NUM LOCK 、SCROLL LOCK键的状态。在MFC中, 状态栏的功能由CStatusBar类实现。 l创建一个状态栏需要以下几个步骤: l构建一个CStatusBar对象。 l调用CStatusBar:Create创建状态栏窗口。 l调用CStatusBar:SetIndicators函数分配窗格,并将状态 栏的每一个窗格与一个字符串ID相联系。 20 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo lstatic UINT indicators = ID_SEPARATOR, / 状态行指示器 ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ; 21 教师师:刘庆庆 Copyright by ARTCOM PT All rights reserved. Company Logo ToolTip显显示即时时提示实实例 lCToolTipCtrl:UpdateTipText void UpdateTipText( LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0 ); void UpdateTipText( UINT nIDText, CWnd* pWnd,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论