配置单独带区 翻译:tellmenow
进行到这里时,命令带控件已经创建,单独单区已经加到控件中了。接下来我们有更多的任务要做,就是去配置每个带区中单独的命令条控件。(实际上,配置命令条控件比起前面讲述的命令条要略微复杂一些。)
可以使用下面的函数来获取带区中的命令条句柄:
HWND CommandBands_GetCommandBar (HWND hwndCmdBands, UINT uBand);
uBnad是包含该命令条的带区的基于0的索引。当命令带控件被初始化时调用该函数的话,索引值直接同带区加到控件的顺序相关联。然而,一旦用户有机会拖拽带区到一个新的顺序,那您的应用程序必须通过发送RB_IDTOINDEX消息给命令带控件,以获取索引值,如下所示:
nIndex = SendMessage (hwndCmdBands, RB_INTOINDEX, ID_BAND,0);
这个消息对管理带区是很重要的,因为许多函数和消息都需要使用带区索引来识别带区。问题在于索引值是不固定的,因为用户移动带区导致索引值变化。不要期望索引值是连贯的。作为一个规则,在没有用RB_IDTOINDEX查询索引值之前,不要盲目使用索引值。
一旦您获得命令条窗口句柄,使用标准的命令条控件函数和消息,就可以很简单地把菜单或者按钮加到命令条中了。大部分情况下,在第一个命令条中只加入菜单,在第二个中只加入按钮,将其它控件加到第三个及后续命令条中。
下面的代码完成了前面提到的创建过程。首先初始化了头两个带区中的命令条控件。因为第三个带区有编辑控件,所以不需要初始化该带区。最后一行代码是调用CommandBands_AddAdornments函数将关闭按钮加到控件中。
// Add menu to first band.
hwndBand = CommandBands_GetCommandBar (hwndCB, 0);
CommandBar_InsertMenubar (hwndBand, hInst, ID_MENU, 0);
// Add standard buttons to second band.
hwndBand = CommandBands_GetCommandBar (hwndCB, 1);
CommandBar_AddBitmap (hwndBand, HINST_COMMCTRL, IDB_STD_SMALL_COLOR, 15, 0, 0);
CommandBar_AddButtons (hwndBand, dim(tbCBStdBtns), tbCBStdBtns);
// Add exit button to command band.
CommandBands_AddAdornments (hwndCB, hInst, 0, NULL);