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

下载本文档

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

文档简介

1、教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo1使用高使用高级级WIN32WIN32控件丰富界面控件丰富界面教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo2l本章主要知识点:l窗体的菜单应用l窗体的工具栏的使用l窗体的状态栏的使用教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo3窗体菜窗体菜单单使用案例使用案例教师教师:刘庆刘庆C

2、opyright by ARTCOM PT All rights reserved.Company LogoLogo4窗体菜窗体菜单单使用案例使用案例l1、菜单资源的添加:在ResourcView卡中选择操作插入资源MENUl2、菜单资源的编辑如同一般菜单的编辑方式样l3、与菜单有关的结构体类型:MENUITEMINFO教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo5ltypedef struct tagMENUITEMINFO l UINT cbSize; /结构的大小,字节 l UINT fMask;

3、/重新获取或设置成员 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,

4、 FAR *LPMENUITEMINFO; 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo6lfMaskfMask重新重新获获取或取或设设置成置成员员, ,这个这个成成员员可以使用一可以使用一个个或多或多个这个这些些值值MIIM_CHECKMARKS MIIM_CHECKMARKS 重新重新获获取或取或设设置置hbmpCheckedhbmpChecked和和hbhbmpUncheckedmpUnchecked成成员员MIIM_DATA MIIM_DATA 重新重新获获取或取或设设置置dwItemDatad

5、wItemData成成员员 MIIM_ID MIIM_ID 重新重新获获取或取或设设置置wIDwID成成员员MIIM_STATE MIIM_STATE 重新重新获获取或取或设设置置fStatefState成成员员MIIM_SUBMENU MIIM_SUBMENU 重新重新获获取或取或设设置置hSubMenuhSubMenu成成员员MIIM_TYPE MIIM_TYPE 重新重新获获取或取或设设置置fTypefType和和dwTypeDatadwTypeData成成员员教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company Logo

6、Logo7lfStatel 菜单项的状态.这个成员可以是一个或多个的这些值:l MFS_CHECKED 复选的菜单项.至于更多关于菜单项选中的信息,看hbmpChecked成员.l MFS_DEFAULT 指定那个是默认的菜单项。一个菜单仅仅只可以包含一个默认的菜单项,粗体显示那个。l MFS_DISABLED 禁止菜单项所以它不能被选择.但是不使它变灰.l MFS_ENABLED 激活菜单项所以它可以被选择。这是默认的状态.l MFS_GRAYED 禁止菜单项和变灰它,所以它不可以被选择.l MFS_HILITE 加亮菜单项l MFS_UNCHECKED 取消复选菜单项.至于更多关于菜单项u

7、nchecked信息,看hbmpUnchecked成员变量l MFS_UNHILITE 移除来自菜单项的加亮区.这是默认状态.教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo8l4、菜单中相关的成员函数的使用l菜单的使用过程:1、添加菜单资源2、定义菜单句柄 HMENU3、加载菜单资源4、设置窗体菜单l加载菜单LoadMenulHMENU LoadMenu(HINSTANCE hlnstance,LPCTSTR lpMenuName);lhlnstance:含有被加载菜单资源的事例模块的句柄。 lLpMen

8、uName:指向含有菜单资源名的以空结束的字符串的指针。l返回值:如果函数调用成功,返回值是菜单资源句柄;如果函数调用失败,返回值是NULL。教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo9l设置窗体菜单SetMenu lBOOL SetMenu(HWND hWnd,HMENU hMenu);lhWnd:菜单被分配到其中的窗口的句柄。lhMenu:新菜单的句柄。如果菜单参数为NULL,则窗口的当前菜单被删除。CMenu:GetMenuItemInfoBOOL GetMenuItemInfo(UINT nI

9、DItem, LPMENUITEMINFO lpMenuItemInfo, BOOL ByPos=FALSE)nIDItem 要获取信息菜单项的标识符或位置。llpMenuItemInfo 指向MENUITEMINFO结构的指针,如联机文档“平台SDK”中所述,它包含了菜单的有关信息。l ByPos 该值指定了nIDItem的意义。缺省情况下,ByPos是FALSE,它指定uItem为菜单项标识符。若ByPos没有设置为FALSE,那么它标识了菜单项的位置。 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo

10、10弹弹出式菜出式菜单单使用使用实实例例l弹出式菜单和普通窗体菜单的加载和属性设置的方法完全相同l在窗体上右击鼠标,通常可引发“WM_CONTEXTMENU”消息,可在此消息中处理函数显示弹出式菜单l弹出式菜单函数:TrackPopupMenu lBOOL TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,CONST RECT* prcRect); 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo11lhMe

11、nu:被显示的快捷菜单的句柄。此句柄可为调用CreatePopupMenu创建的新快捷菜单的句柄,也可以为调用GetSubMenu取得的与一个已存在菜单项相联系的子菜单的句柄。 luFlags:一种指定功能选项的位标志。用下列标志位之一来确定函数如何水平放置快捷菜单: lTPM_CENTERALIGN:若设置此标志,函数将按参数x指定的坐标水平居中放置快捷菜单。 lTPM_LEFTALIGN:若设置此标志,函数使快捷菜单的左边界与由参数X指定的坐标对齐。 lTPM_RIGHTALIGN:若设置此标志,函数使快捷菜单的右边界与由参数X指定的坐标对齐。 l用下列标志位之一来确定函数如何垂直放置快捷

12、菜单: lTPM_BOTTOMALIGN:若设置此标志,函数使快捷菜单的下边界与由参数y指定的坐标对齐。 lTPM_TOPALIGN:若设置此标志,函数使快捷菜单的上边界与由参数y指定的坐标对齐。 lTPM_VCENTERALIGN;若设置此标志,函数将按参数y指定的坐标垂直居中放置快捷菜单 l用下列标志位之一来确定在菜单没有父窗口的情况下用户的选择: lTPM_NONOTIFY:若设置此标志,当用户单击菜单项时函数不发送通知消息。 lTPM_RETURNCMD;若设置此标志;函数将用户所选菜单项的标识符返回到返回值里。 l(补充:当TrackPopupMenu的返回值大于0,就说明用户从弹出

13、菜单中选择了一个菜单。以返回的ID号为参数wParam的值,程序给自己发送了一个WM_SYSCOMMAND消息) l用下列标志位之一来确定在快捷菜单跟踪哪一个鼠标键: lTPM_LEFTBUTTON:若设置此标志,用户只能用鼠标左键选择菜单项。 lTPM_RIGHTBUTTON:若设置此标志,用户能用鼠标左、右键选择菜单项。 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo12lModifyMenu l函数功能:该参数修改已存在的菜单项,并指定菜单项的内容、外观和性能。 lBOOL ModifyMenu(H

14、MENU 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给出菜单项基于零的相对位置。lU

15、IDNewltem:指定被修改菜单项的标识符,或者当参数uFlags设置为MF_POPUP时,指定下拉式菜单或子菜单的句柄。 llpNewltem:指定被修改菜单项的内容。其含义依赖于参数UFlags是否包含标志MF_BITMAP,MF_OWNERDRAW或MF_STRING。 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo13lCheckMenuItem l函数功能:该函数取得与指定菜单项相联系的菜单标志。如果该菜单项打开了一个子菜单,该函数也返回子菜单里的菜单项数。 lDWORDCheckMenuIt

16、em(HMENUhmenu, UINTuIDCheckItem, UINTuCheck);lhmenu:含有其菜单项的标志将被提取得的菜单的句柄。 luIDCheckItem:制定要修改的菜单项。 luCheck:表示标记的状态。此参数可取下列值之一: l MF_BYCOMMANDMF_BYCOMMAND:表示参数uId给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION都没被指定,则MF_BYCOMMAND是缺省值。 l MF_BYPOSITIONMF_BYPOSITION:表示参数uId给出菜单项相对于零的位置。 l MF_CHECKEDMF_CHECKED:放置选

17、取标记于菜单项旁边(只用于下拉式菜单、子菜单或快捷菜单)。 l MF_DISABLEDMF_DISABLED:使菜单项无效。MF_GRAYED:使菜单项无效并交灰。MF_HILITE:加亮菜单项。 l MF_MENUBARBREAKMF_MENUBARBREAK:对下拉式菜单、子菜单和快捷菜单,新列和旧列由垂直线隔开,其余功能同MF_MENUBREAK标志。 l MF_MENUBREAKMF_MENUBREAK:将菜单项放于新行(对菜单条)或无分隔列地放于新列(对下拉式菜单、子菜单或快捷菜单)。 l MF_SEPARATORMF_SEPARATOR:创建一个水平分隔线(只用于下拉式菜单、子菜单

18、或快捷菜单)。 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo14工具工具栏栏使用使用实实例例教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo15l工具栏的封装类:CToolBarl使用工具栏的步骤:l1、创建工具栏 CreateExl2、加载工具栏 LoadToolBarlvirtual BOOL CreateEx( CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT

19、, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP)lBOOL LoadToolBar( LPCTSTR lpszResourceName ); l函数CWnd:RepositionBars() l功能是将可用的客户区区域信息放到消息WM_SIZEPARENT的消息参数里,然后枚举本窗口的所有子窗口,给每个子窗口 都发送这个消息,每个响应这个消息的子窗口都会把可用客户区切去一块。最后把那个特定的子窗口的尺寸和位置调整到刚好放在最后剩下的可用区域里。 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights

20、 reserved.Company LogoLogo16256256色工具色工具栏栏使用使用实实例例教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo17l本章要点:l将256色以上的图片粘贴到工具栏中l1、插入一个工具栏l2、插入位图l3、在程序中处理图像的加载教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo18lBOOL Create( int cx, int cy, UINT nFlags, int nInitial

21、, int nGrow ); lnFlags:lILC_COLOR24 ILC_COLOR24 :图片为24位真彩色lILC_MASKILC_MASK:添加的:添加的图图片片显显示示时时要要让让指定的指定的颜颜色透明色透明lnInitial:列表的初始大小lnGrow:动态调整大小时的增量lAdd :将位图添加到图片列表,图片列表按创建时指定的大小来切分图片lint Add( CBitmap* pbmImage, COLORREF crMask ); 教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo19状态

22、栏输状态栏输出信息出信息实实例例教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo20l状态栏实际上是个窗口,一般分为几个窗格,每个窗格显示不同的信息。 lAppWizard会为应用程序自动创建一个状态栏,该状态栏包括几个窗格,分别用来显示状态栏提示和CAPS LOCK、NUM LOCK 、SCROLL LOCK键的状态。在MFC中,状态栏的功能由CStatusBar类实现。l创建一个状态栏需要以下几个步骤:l构建一个CStatusBar对象。l调用CStatusBar:Create创建状态栏窗口。l调用CS

23、tatusBar:SetIndicators函数分配窗格,并将状态栏的每一个窗格与一个字符串ID相联系。教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo21lstatic UINT indicators =ID_SEPARATOR, / 状态行指示器ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;教师教师:刘庆刘庆Copyright by ARTCOM PT All rights reserved.Company LogoLogo22ToolTipToolTip显显示即示即时时提示提示实实例例lCToolTipCtrl:UpdateTipTextvoid UpdateTipText( LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0 );void

温馨提示

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

评论

0/150

提交评论