定制

【勇芳软件工作室】汉化HomePreviousNext

工具栏内置了您可以通过给工具栏提供CCS_ADJUSTABLE公共控件样式使用户可以使用的自定义功能。自定义功能允许用户将按钮拖动到新位置,或者通过将其拖出工具栏来删除按钮。此外,用户可以双击工具栏以显示“自定义工具栏”对话框,允许用户添加,删除和重新排列工具栏按钮。应用程序可以使用TB_CUSTOMIZE消息显示对话框。

工具栏会在定制过程的每个步骤向父窗口发送通知消息(形式为WM_NOTIFY消息)。如果用户按住SHIFT键并开始拖动按钮,工具栏将自动处理拖动操作。工具栏将TBN_QUERYDELETE通知消息发送到父窗口,以确定该按钮是否可能被删除。如果父窗口返回FALSE,则拖动操作结束。否则,工具栏捕获鼠标输入,并等待用户释放鼠标按钮。

当用户释放鼠标按钮时,工具栏确定鼠标光标的位置。如果光标位于工具栏外,该按钮将被删除。如果光标位于另一个工具栏按钮上,工具栏会将TBN_QUERYINSERT通知消息发送到父窗口,以确定按钮是否可能插入给定按钮的左侧。如果父窗口返回TRUE,则插入该按钮;否则,它不是。工具栏发送TBN_TOOLBARCHANGE通知消息以指示拖拽操作的结束。

如果用户在不按住SHIFT键的情况下开始拖动操作,工具栏会将TBN_BEGINDRAG通知消息发送到父窗口。实现自己的按钮拖动代码的应用程序可以使用该消息作为信号开始拖动操作。工具栏发送TBN_ENDDRAG通知消息,表示拖动操作的结束。

用户通过“自定义工具栏”对话框自定义工具栏时,工具栏会发送通知消息。在用户双击工具栏之后,但在创建对话框之前,工具栏会发送TBN_BEGINADJUST通知消息。接下来,工具栏开始发送一系列TBN_QUERYINSERT通知消息,以确定工具栏是否允许插入按钮。当父窗口返回TRUE时,工具栏停止发送TBN_QUERYINSERT通知。如果父窗口对于任何按钮都不返回TRUE,则工具栏会销毁该对话框。

接下来,工具栏通过为工具栏中的每个按钮发送一个TBN_QUERYDELETE通知消息来确定是否可以删除任何按钮。父窗口返回TRUE,表示可以删除按钮;否则返回FALSE。工具栏将所有工具栏按钮添加到对话框,但它会灰化那些可能不会被删除的按钮。

每当工具栏需要“自定义工具栏”对话框中有关按钮的信息时,它将发送TBN_GETBUTTONINFO通知消息,指定需要信息的按钮的索引以及TBNOTIFY结构的地址。父窗口必须填写相关信息的结构。

“自定义工具栏”对话框包括“帮助”按钮和“重置”按钮。当用户选择“帮助”按钮时,工具栏将发送TBN_CUSTHELP通知消息。父窗口应通过显示帮助信息进行响应。当用户选择重置按钮时,该对话框将发送TBN_RESET通知消息。此消息表示工具栏即将重新初始化对话框。

应用程序可以使用TB_SAVERESTORE消息将工具栏的当前状态保存在初始化文件中,或者基于先前存储在初始化文件中的信息恢复状态。如果没有指定初始化文件,该消息会将状态信息保存在指定的初始化文件或WIN.INI文件中。应用程序通常在用户开始自定义工具栏之前存储状态,以防用户以后想要将工具栏恢复到其原始状态。