术语 | CToolBarCtrl | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
释义 | CToolBarCtrl
CToolBarCtrl类提供了Windows工具条通用控件的性能。这个控件(也就是CToolBarCtrl类)只对运行在Windows 95和Windows NT 3.51或更高版本下的程序来说才是可用的。 一个Windows工具条通用控件是一个矩形子窗口,它包含一个或多个按钮。这些按钮可以显示一个位图图像,一个字符串,或两者都有。当用户选择一个按钮时,它向该工具条的属主窗口发送一条命令消息。通常,工具条中的按钮对应于应用程序的菜单中的项;这些按钮为用户访问一个应用程序的命令提供了更为直接的方法。 CToolBarCtrl对象包含几个重要的内部数据结构:一个按钮图像列表或一个图像列表,一个按钮标签字符串列表和一个TBBUTTON结构的列表,该结构使一个图像和/或字符串与按钮的位置,风格,主题和命令ID相关联。这些数据结构的每一个都由一个从零开始的索引来引用。在你可以使用一个CToolBarCtrl对象之前,你必须设置这些数据结构。字符串列表只能被用作按钮标签;不能从按钮中检取字符串。 要使用一个CToolBarCtrl对象,通常你应该遵循下面的这些步骤:
为Internet Explorer 4.0或更新版提供的支持 要支持在Internet Explorer 4.0或更新版之后引入的性能,MFC提供了图像列表支持,为工具条提供了透明和平坦风格。 一个透明的工具条允许在工具条下的客户被透过工具条显示出来。要创建一个透明的工具条,要同时使用TBSTYLE_FLAT和TBSTYLE_TRANSPARENT风格。透明的工具条具有热点跟踪的特色;就是说,当鼠标指针移动到工具条的一个热点按钮上时,按钮的外观改变。只用TBSTYLE_FLAT风格创建的工具条将包含不透明的按钮。 图像列表支持使控件的缺省行为具有更大的灵活性,并支持热点图像和无效的图像。对透明的工具条使用GetImageList,GetHotImageList和GetDisabledImageList可以根据它的状态来操纵图像。 有关使用CToolBarCtrl的更多信息,参见“Visual C++程序员指南”中的“控件主题”和“使用CToolBarCtrl”。 #include <afxcmn.h> 请参阅:CToolBar CToolBarCtrl类成员 构造
属性
操作
CToolBarCtrl:处理工具提示通知 当你指定工具条具有TBSTYLE_TOOLTIPS风格时,该工具条创建并管理一个工具提示控件。一个工具提示是一个小的弹出窗口,该窗口包含了一行用于描述一个工具条按钮的文本。通常该工具提示是被隐藏的,只有当用户将光标放在一个工具条按钮上并停留大概半秒时间时它才显示出来。工具提示显示在光标的附近。 在工具提示被显示之前,TTN_NEEDTEXT通知消息被发送给该工具条的属主窗口,以获取对应于该按钮的描述文本。如果该工具条的属主窗口是一个CFrameWnd窗口,则不需要任何额外的工作就会显示工具提示,因为CFrameWnd有一个缺省的TTN_NEEDTEXT通知处理函数。如果该工具条的属主窗口不是由CFrameWnd派生而来的,比如是一个对话框或格式视,则你必须在你的属主窗口的消息映射中添加一项,并在消息映射中提供一个通知处理函数。下面就是要被添加到你的属主窗口的消息映射: ON_NOTIFY_EX( TTN_NEEDTEXT, 0, memberFxn )
除了TTN_NEEDTEXT通知,一个工具提示控件可以向一个工具条控件发送下列通知:
CToolBarCtrl:处理定制通知 一个Windows工具条通用控件具有内在的定制特征,包括一个系统定义的定制对话框,用来让用户插入、删除,或重新安排工具条按钮。应用程序决定定制是否有效,并控制用户对该工具条定制的限度。 你可以通过给予工具条CCS_ADJUSTABLE风格来使这些定制特征对于用户来说是可用的。此定制特征允许用户将一个按钮拖动到一个新的位置,或通过拖动按钮离开工具条来删除这个按钮。另外,用户可以双击工具条来显示Customize Toolbar对话框,让用户添加、删除,或重新安排工具条按钮。应用程序可以通过使用Custoimize成员函数来显示对话框。 在定制过程中的每一步,工具条控件都向父窗口发送通知消息。如果用户按住SHIFT键并开始拖动一个按钮,则工具条自动处理这个拖动操作。工具条发送TBN_QUERYDELETE通知消息给父窗口,以确定是否应该删除该按钮。如果父窗口返回FALSE,则这个拖动操作结束。否则,工具条捕捉鼠标输入并等待用户释放鼠标按钮。 当用户释放鼠标按钮时,工具条控件确定鼠标光标所在的位置。如果该光标的位置是在工具条之外,则按钮被删除。如果光标位于另一个工具条按钮上,则工具条向其父窗口发送TBN_QUERYINSERT通知消息,以确定是否要将一个按钮插入在给定按钮的左边。如果父窗口返回TRUE,则该按钮被插入;否则,不插入。工具条发送TBN_TOOLBARCHANGE通知来表示拖动操作结束。 如果用户在没有按下SHIFT键的情况下开始一次拖动操作,则工具条控件发送TBN_BEGINDRAG通知消息给属主窗口。一个实现了自己的按钮拖动代码的应用程序可以使用这个消息作为开始一次拖动操作的信号。工具条发送TBN_ENDDRAG通知消息来表示拖动操作结束。 当用户通过使用Customize Toolbar对话框来定制一个工具条时,该工具条控件发送通知消息。在用户双击工具条之后,但在对话框被创建之前,该工具条发送TBN_BEGINADJUST通知消息。然后,工具条开始发送一系列TBN_QUERYINSERT消息,以确定该工具条是否允许插入按钮。当父窗口返回TRUE时,该工具条停止发送TBN_QUERYINSERT通知消息。如果父窗口没有对任何按钮返回TRUE,则工具条销毁该对话框。 接着,工具条控件通过为工具条中的每一个按钮发送一个TBN_QUERYDELETE通知消息来确定是否可以从工具条中删除某个按钮。父窗口返回TRUE则表示可以删除该按钮;否则,父窗口返回FALSE。工具条将所有的按钮都添加到对话框中,但是将那些不能删除的按钮变灰。 不管什么时候,当工具条控件需要有关Customize Toolbar对话框中的某个控件的信息时,它就发送TBN_GETBUTTONINFO通知信息,并指定它想获取其信息的按钮的索引,以及一个TBNOTIFY结构的地址。父窗口必须用相关的信息填充该结构。 Customize Toolbar对话框还包括一个Help按钮和一个Reset按钮。当用户选择Help按钮时,工具条控件发送TBN_CUSTHELP通知消息。父窗口应该通过显示帮助信息来作出响应。当用户选择Reset按钮时,对话框发送TBN_RESET消息。这个消息表示工具条要再次初始化这个对话框。 这些消息都是WM_NOTIFY消息,通过向你的属主窗口的消息映射中添加下列形式的消息映射项,你可以在你的属主窗口中处理它们。 ON_NOTIFY(wNotifyCode, idControl,memberFxn)
afx_msg void memberFxn( NMHDR* pNotifyStruct, LRESULT* result ); 如果通知消息的处理函数返回一个值,则处理函数应该将这个值存放在由result指向的LRESULT中。 对每一个消息,pNotifyStruct指向一个NMHDR结构或一个TBNOTIFY结构。 这些结构被描述如下:NMHDR结构包含了下列成员: typedef struct tagNMHDR { HWND hwndFrom; // 发送消息的控件的句柄 UINT idFrom; // 发送消息的控件的标识符 UINT code; // 通知代码,参见下面 } NMHDR;
工具条发送下列信息:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
随便看 |
|
MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。