友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

VC语言6.0程序设计从入门到精通-第22部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




     void CGridDemoView::OnSetFont()    



     {  



         // TODO: Add your mand handler code here  



         //获得选中单元格的旧字体  



         CFont *pFont=m_CellArray'm_nCurCellID'。GetFont();  



         LOGFONT lf;  



                                                                                       ·95 ·  


…………………………………………………………Page 105……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



          if (pFont != NULL)  



                pFont…》GetObject(sizeof(LOGFONT); &lf);  



          else  //单元格使用默认字体  



                ::GetObject(GetStockObject(SYSTEM_FONT); sizeof(LOGFONT); &lf);  



          //使用选择字体对话框  



          CFontDialog dlg(&lf; CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT);  



          if (dlg。DoModal()==IDOK)  



          {  



                //设置新字体  



                m_CellArray'm_nCurCellID'。SetFont(&lf);  



          }  



     }  



4。5。6    颜色对话框  



     当需要选择颜色的时候就可以使用  Windows                             通用的颜色对话框,如图                    4…32   所示。 

CColorDialog 封装了字体对话框的使用,其使用方法与前面所述的模态通用对话框类似。  



                                                               



                                          图 4…32    颜色对话框  



     GridDemo 例程中使用颜色对话框的代码在 CGridDemoView::OnSetColor()函数中。添加 

步骤如下。  

     (1)添加 CGridDemoView::OnSetColor()消息处理函数。  

     CGridDemoView::OnSetColor() 函数是“编辑|颜色”菜单的消息处理函数,对应                                          ID  为 

ID_SET_COLOR 。用户需要按照第 3 章的讲解,在“编辑”顶层菜单中添加标题为“颜色”, 

ID 为 ID_SET_COLOR 的子菜单,然后为 CGridDemoView 类添加这个 ID 的消息处理函数, 

即 OnSetColor() 。  

     (2 )编辑 CGridDemoView::OnSetColor()消息处理函数使用颜色对话框。代码如下:  



     void CGridDemoView::OnSetColor()    



      {  



          // TODO: Add your mand handler code here  



          //获得选中单元格的旧前景色  



          CColorDialog dlg(m_CellArray'm_nCurCellID'。GetFgColor());  



          if (dlg。DoModal()==IDOK)  



 ·96 ·  


…………………………………………………………Page 106……………………………………………………………

                                                                                        第 4 章    对话框  



          {  



                //设置新的前景颜色  



                m_CellArray'm_nCurCellID'。SetFgColor(dlg。GetColor());  



          }  



     }  



4。6    消息对话框  



     消息对话框 MessageBox 是 Windows 系统中自带的最简单的对话框,用于提示一些简单 

的信息,如图 4…33 所示。本章 4。1。3 节中实例 Sample4_1 在登录对话框的消息处理函数中就 

大量使用了消息对话框。  



                                                                    



                                          图 4…33    消息对话框  



     在 MFC 中,消息对话框通过 CWnd::MessageBox()和 AfxMessageBox()两个函数进行调用。 

前一个函数是 CWnd 的成员函数,而 AfxMessageBox()则是全局函数。两个函数的原型分别为:  



     int MessageBox(  



           LPCTSTR lpszText;  



           LPCTSTR lpszCaption = NULL;  



           UINT nType = MB_OK    



     );  



     int AfxMessageBox(  



           LPCTSTR lpszText;  



           UINT nType = MB_OK;  



           UINT nIDHelp = 0    



     );  



     o  lpszText 参数:用于设置对话框的内容。  

     o  lpszCaption 参数:用于设置对话框的标题。  

     o  nType 参数:设置消息对话框的属性,属性可以为表 4…2 和表 4…3 中的取值的按位或的组合。  

     o  nIDHelp 参数:用于设置帮助的上下文 ID 。  



     表 4…2                        消息对话框主要参数——对话框类型  



           nType 取值                                             参数说明  

 MB_ABORTRETRY                     有“终止”、“重试”和“忽略”按钮  

 MB_OK                             有“确定”按钮  

 MB_OKCANCEL                       有“确定”和“取消”按钮  

 MB_RETRYCANCEL                    有“重试”和“取消”按钮  

 MB_YESNO                          有“是”和“否”按钮  

 MB_YESNOCANCEL                    有“是”、“否”和“取消”按钮  



                                                                                                  ·97 ·  


…………………………………………………………Page 107……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



     表 4…3                    消息对话框主要参数——对话框图标  



          nType 取值                                      显示图标  

 MB_ICONEXCLAMTION  

 MB_ICONWARNING  

                                                                

 MB_ICONASTERISK  

 MB_ICONINFORMATION  

                                                                



 MB_ICONQUESTION  

                                                                

 MB_ICONHAND  

 MB_ICONSTOP  

 MB_ICONERROR                                                   



       

     如图 4…33 所示的消息对话框可以用如下代码显示:  



     MessageBox(〃查找至末尾,是否从头开始查找?〃;  



                  〃查找〃;MB_YESNO|MB_ICONQUESTION)  



     技巧:WM_MOUSEFIST 和 WM_MOUSELAST 分别指定了鼠标所能产生的第一个消息和最后一 



          个消息类型,因此程序可以 GetMessage           (&msg; WM_MOUSEFIRST; WM_MOUSELAST ) 



          函数等待并获取鼠标消息,获取的鼠标消息保存在参数 msg 中。  



     运行 MessageBox()或者 AfxMessageBox()都可打开模态消息对话框,返回值就是用户单 

击的消息对话框的按钮 ID :  

     o  IDABORT :单击“终止”按钮。  

     o  IDCANCEL :单击“取消”按钮。  

     o  IDIGNORE :单击“忽略”按钮。  

     o  IDNO :单击“否”按钮。  

     o  IDOK :单击“确定”按钮。  

     o  IDRETRY :单击“重试”按钮。  

     o  IDYES :单击“是”按钮。  



4。7    本章小结  



     本章详细介绍了 Windows 系统中最常用的用户界面——对话框的使用,并根据对话框的 

各种不同类型进行分类介绍。本章需要掌握的内容有:  

     o  一般对话框的创建和使用方法,包括模态和非模态对话框。  

     o  属性页对话框的创建和使用。  

     o  通用对话框的使用。  

     o  消息对话框的使用。  

     对话框在任何一个程序中都会大量使用,设计功能丰富完善、界面合理美观的对话框是 

设计用户界面的重点和难点,需要认真学习、理解和掌握。  

       



 ·98 ·  


…………………………………………………………Page 108……………………………………………………………

      



                       第 5 章    常用控件  

                        第 5 章    常用控件  



    在与用户的交互过程中,控件(Control )担任着重要的角色。MFC 提供了大量的控件类, 

它们封装了控件的功能,通过这些控件类,可以方便地创建控件,对控件进行查询和控制。 

控件可粗分为两类,一类是在               Windows  3。x 中就已支持的传统控件,另一类是  Windows  

95/NT/2000 中支持的新型 Win32 控件,所有的控件类都是 CWnd 类的直接或间接派生类 。不 

过对于新型 Win32 控件,应用程序只能创建控件对象而不能创建数据变量 。不管是什么类型 

的控件,一般都具有 WS_CHILD 和 WS_VISIBLE 窗口风格,其中 WS_CHILD 指定窗口为子 

窗口,WS_VISIBLE      使窗口是可见的。另外,大部分控件还具有                      WS_TABSTOP    风格, 

WS_TABSTOP 使控件具有 Tabstop 属性。MFC 类库提供的主要控件如表 5…1 所示。  



    表 5…1                          常用控件列表  



         控件                            功能                         对应控件类  

 静态文本(Static Text )   显示正文,一般不能接受输入信息                        CStatic  

                      显式位图、图标、方框和图元文件,一般不能接 

 图片(Picture )                                                CStatic  

                      受输入信息  

 文本编辑框(Edit Box )     输入并编辑正文,支持单行和多行编辑                      CEdit  

 命令按钮(Button )         响应用户的输入,触发相应的事件                       CButton  

                      用作选择标记,可以有选中、不选中和不确定                3 

 检查框(Check Box )                                             CButton  

                      种状态  

 单选按钮(Radio Button )  用来从两个或多个选项中选中一项                        CButton  

                      显示正文和方框,主要用来将相关的一些控件聚 

 组框(Group Box )                                              CButton  

                      成一组  

                      显示一个列表,用户可以从该列表中选择一项或 

 列表框(List Box )                                              CListBox  

                       多项  

                      是一个编辑框和一个列表框的组合,分为简易式、 

 组合框(bo Box )                                             CboBox  

                       下拉式和下拉列表式  

                      主要用来从一个预定义范围值中迅速而有效地选 

 滚动条(Scroll Bar )                                            CScrollBar  

                      取一个整数值  

 列表控件(ListCtrl )      主要用来显示列表型报表,提供多种显示模式                   CListCtrl  

 树型控件(TreeCtrl )      主要用来显示树状结构数据                           CTreeCtrl  

 选项卡控件(TabCtrl )      主要用来显示多种重叠的相关对话框界面                     CTabCtrl  



5。1    静态文本(Static text)控件  



    静态文本控件是传统控件的一种,传统控件主要包括文本控件、命令按钮、选择框、单 

选按钮、编辑框、列表框和组合框等,如图 5…1 所示。  

      

      

      


…………………………………………………………Page 109……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



      



                  编辑框                           单选按钮  

      



          复选框                                                        组框  



  静态文本  



                                                                  列表框  



     组合框  



                                                                 



                                            普通按钮  



      



                                图 5…1    主要传统控件样式  



5。1。1    传统控件通知消息  



    在介绍静态文本控件的用法之前,先讲述传统控件的控件通知消息。控件通过向父窗口 

发送控件通知消息来表明发生了某种事件。例如,在按钮上单击鼠标时,按钮控件会向父窗 

口发送 BN_CLICKED 消息。传统控件的通知消息实际上是通过 WM_MAND 消息发给 

父窗口的(滚动条除外 ),在该消息的 wParam  中含有通知消息码(如 BN_CLICKED )和控 

件的 ID,在 lParam 中则包含了控件的句柄。  

    利用  ClassWizard  可以很容易地为控件通知消息加入消息映射和消息处理函数,这在上 

一章中的对话框应用程序中已经讲解过了。传统控件的消息映射宏是ON_XXXX,其中XXXX 

表示通知消息码,如  BN_CLICKED 。ON_XXXX  消息映射宏格式如下,该宏有两个参数, 

一个是控件的 ID,一个是消息处理函数名:  



    ON_XXXX(nID;memberFxn)  



    消息处理函数的声明形式如下:  



    afx_msg void memberFxn();  



    有时,为了处理方便,需要把多个  ID  连续的控件发出的相同消息映射到同一个处理函 

数上,这时就要用到             ON_CONTROL_RANGE       宏。例如,要处理一组单选按钮发出的 

BN_CLICKED 消息,相应的消息映射如下:  



    ON_CONTROL_RANGE(BN_CLICKED;IDC_FIRST;IDC_LAST;
返回目录 上一页 下一页 回到顶部 1 2
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!