友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第58章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






    当单击选项卡或按钮时,选项卡(TabControl )控件(CTabCtrl )向其父窗口发送通知消 

息。如果要进行某种响应,应对这些消息进行处理。例如,当单击选项卡时,也许想在显示 

选项卡之前在页面上预设控件数据,即响应单击选项卡消息时作出预设数据的响应。  

    处理来自视图或对话框类中的选项卡(TabControl )控件的 WM_NOTIFY 消息,用“属 

性”窗口创建带 switch 语句的 OnChildNotify()处理函数。选项卡控件向父窗口发送的主要通 

知消息如表 5…25 所示。  



 ·142 ·  


…………………………………………………………Page 152……………………………………………………………

                                                                                 第 5 章    常用控件  



     表 5…25                            选项卡控件的通知消息  



          通知消息                                               含义  

 NM_CLICK                    通知父窗口用户在控件区域范围内点击了鼠标左键  

 NM_RCLICK                   通知父窗口用户在控件区域范围内点击了鼠标右键  

 NM_RELEASEDCAPTURE          通知父窗口在控件区域范围内释放鼠标捕获消息  

 TCN_FOCUSCHANGE             通知父窗口控件的按钮聚焦已经改变  

 TCN_GETOBJECT                当具有 TCS_EX_REGISTERDROP 扩展特性时并且对象被拖动的通知消息  

 TCN_KEYDOWN                 通知父窗口在控件范围内键盘被按下  

 TCN_SELCHANGE               通知父窗口控件的选项卡选择项已经改变  

 TCN_SELCHANGING             通知父窗口控件的选项卡选择项正在改变  



     选项卡控件还涉及到一些重要的数据结构,这些预定义的数据结构在该控件应用中起着 

重要作用。主要涉及到的的结构如下。  



     1.NMTCKEYDOWN 结构  



     该结构包含键盘按下时的相关信息,主要用于处理 TCN_KEYDOWN 通知消息,该结构 

定义如下:  



     typedef struct tagNMTCKEYDOWN {  



             NMHDR hdr;  



             WORD wVKey;  



             UINT flags;  



     } NMTCKEYDOWN  



     2 .TCHITTESTINFO 结构  



     该结构主要用于鼠标单击测试的通知消息,定义如下:  



     typedef struct tagTCHITTESTINFO {  



             POINT pt;  



             UINT flags;  



     } TCHITTESTINFO; *LPTCHITTESTINFO;  



     3 .TCITEM 结构  



     该结构指定选项卡控件选项的具体属性,定义如下:  



     typedef struct tagTCITEM {      



             UINT mask;  



     #if (_WIN32_IE 》= 0x0300)  



             DWORD dwState;  



             DWORD dwStateMask;  



     #else  



             UINT lpReserved1;  



             UINT lpReserved2;  



     #endif  



             LPTSTR pszText;  



                                                                                            ·143 ·  


…………………………………………………………Page 153……………………………………………………………

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



              int cchTextMax;  



              int iImage;  



              LPARAM lParam;  



      } TCITEM; *LPTCITEM;  



      4 .TCITEMHEADER 结构  



      该结构用于指定或接收选项卡控件本身的属性,定义如下:  



      typedef struct tagTCITEMHEADER {  



              UINT mask;  



              UINT lpReserved1;  



              UINT lpReserved2;  



              LPTSTR pszText;  



              int cchTextMax;  



              int iImage;  



      } TCITEMHEADER; *LPTCITEMHEADER;  



      此外 CTabCtrl 还提供了一些函数用于得到和修改控件的状态:  



      int GetCurSel()/int SetCurSel(int nItem);//用于得到/设置当前被选中的页位置  



      BOOL DeleteItem(int nItem)/BOOL DeleteAllItems();//用于删除指定/所有页面  



      void RemoveImage(int nImage);//用于删除某页选择位置上的图标  



      在当前页发生改变时需要隐藏当前的一些子窗口,并显示其他的子窗口。下面的代码演 

示了如何实现上述功能,主要的代码如下:  



      CParentWnd::OnCreate(。。。)    



      {  



            m_tab。Create(。。。);    



            m_tab。InsertItem(0;〃Option 1〃);  



            m_tab。InsertItem(1;〃Option 2〃);  



            Create a edit box as the m_tab’s Child    



            Create a static box as the m_tab’s Child    



            edit_box。ShowWindow(SW_SHOW); // edit box 在属性页的第一页    



            static_box。ShowWindow(SW_HIDE); // static box 在属性页的第二页    



      }    



      void CParentWnd::OnSelectChangeTab(NMHDR* pNMHDR; LRESULT* pResult)    



      {  



            //处理页选择改变后的消息      



            if(m_tab。GetCurSel()==0)    



            {//根据当前页显示/ 隐藏不同的子窗口  



                  edit_box。ShowWindow(SW_SHOW);  



                  static_box。ShowWindow(SW_HIDE);  



            }    



            else    



 ·144 ·  


…………………………………………………………Page 154……………………………………………………………

                                                                 第 5 章    常用控件  



        {//    



            edit_box。ShowWindow(SW_HIDE);  



            static_box。ShowWindow(SW_SHOW);  



        }    



    }  



    技巧:获取对话框中控件的窗口指针并进行一些常用的操作  



         对于对话框中的控件,实际上是对话框的一个子窗口。在实际编程中,可能常常会对控件 



         进行一些操作,得到该控件窗口的指针是第一步,通过 CWnd::GetDlgItem 可以很方便地得 



         到控件窗口的指针。假设某对话框上有一个 ID 为 IDC_XXX_STATIC 的静态文本控件,可 



         以通过下面这行代码重新设置文本内容:  



         GetDlgItem(IDC_XXX_STATIC)…》SetWindowText(…)  



         对于其他操作窗口的常用操作,也可以通过 GetDlgItem 传回的指针来调用对应的窗口操作 



         函数来完成。  



5。11    本章小结  



    本章对  MFC    编程中常常用到的控件进行了介绍,包括传统的  Windows                     控件和新型的 

Win32 控件。在传统控件中主要介绍了静态文本控件、文本编辑控件、滚动条控件、按钮控 

件(包括命令按钮、单选按钮、复选按钮)、列表框控件、组合框控件、图片控件等。在新型 

控件中主要介绍了列表控件、树状控件、选项卡控件。本章对这些控件本身的特性、使用方 

法以及主要的成员函数进行了介绍,掌握这些控件的使用方法是构建 Windows 应用程序的前 

提条件,因为在用户界面程序设计中是离不开控件的使用的。  

    关于控件的创�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!