windows *** 作系统在默认的状态下,有许多标准按钮不会在工具栏上显示,调示它们的方法也比较容易。首先在资源管理器窗口的菜单栏上-工具栏-自定义-在自定义工具栏的对话框中:(1)添加选定左边,可用工具栏按钮中需要的命令按钮后,点击中间的添加,将命令按钮添加到到右边的当前工具按钮中,全部选择完毕后,点关闭即可。
问题的提出:一个应用程序想要动态改变菜单项。使用CCmdUI::SetText("Menu Text")可以改变菜单文本,但是如何动态改变工具条和状态条的文本呢?有几种策略,避免,欺骗,面对 首先,避免:为什么你非要动态改变菜单项?一般说来,这是个坏主意,动态菜单容易把人搞糊涂。我正在使用你的产品,本来用得好好的突然菜单项变了。不管什么时候,每当我看到一个改变菜单的应用时,都要琢麽为什么他们需要这样的用户界面设计。然而,每一个规则都有例外,许多例子的动态改变菜单项都很酷。例如,在大多数面向文档的应用程序中“文件”菜单的最后一项MRU(最近使用的文件列表)。但作为一个用户,面对动态菜单项的弊端是显而易见的。我把避免动态菜单提升为设计准则。即便是采用了动态菜单的设计,也要让用户注意不到菜单项是改变,否则,It''s bad design。反之,如果用户注意不到菜单项的改变,It''s OK。但是动态改变状态条提示又如何呢?在MRU菜单中,无论什么文件,状态条一般都提示“打开选择的文档”。这是另一个要避免的策略。只有特别本位或任性的程序员会 *** 心实现一个动态提示的菜单,如:“打开某某文件”,而不去用完全可行并且有效的提示“打开这个文档”。你完全有权利不遵循这种惯例,也就是说,如果你非要改变状态条提示的话,那就请往下继续看吧,你会明白的。使用动态菜单的另一场合是当你想设置某个布尔状态时。例如,隐藏或显示工具条,当工具条可见时显示“隐藏工具条”,反之显示“显示工具条”。更为普通的方法是用单个命令以校验标记来实现,当工具条可见时显示标记
GUI的高手们常常争论哪种方法更好。可能它没有什么差别,但是即使你决定使用动态提示(如隐藏/显示工具条),你也能使用单个的命令ID,ID_VIEW_TOOLBAR,和单个的提示“隐藏或显示工具条”。我认为没有必要去实现动态提示。
在所有建议中,你要做的第一件事情是好好重新考虑用户的界面。你确实需要动态菜单项吗?以及你确实需要菜单的动态提示吗?除非两个问题的答案都是“是”。否则就止住,别再浪费时间。
要改变菜单文本是容易的。只要实现ON_UPDATE_COMMAND_UI处理器并调用CCmdUI::SetText即可:
void CFrameWnd::OnUpdateToolbar(CCmdUI pCmdUI)
{
BOOL bVisible = IsToolbarVisible();
// Note same mnemonic (&T) for both cmds!
pCmdUI->SetText(bVisible "Hide &Toolbar" : "Show &Toolbar");
}
仅此而已。下一步是提示。当你创建了一个菜单提示,你给它一个ID号。MFC使用这个ID来查找资源串获取命令提示。例如:
STRINGTABLE DISCARDABLE
BEGIN
ID_VIEW_TOOLBAR "Show or hide the toolbar\nToggle ToolBar"
END
如果你的菜单命令也有工具条按钮,MFC用“\n”(新行标记)后的文本作为工具条提示文本。因为MFC允许每个命令只能有一个串,如何动态改变提示呢?最简单的方法是编写一个提示在两种情况下都工作,象前面讨论的隐藏、显示工具条的例子。但这种方法显得很笨拙。
获得动态提示的一个方法是将命令分成几个命令-例如,ID_HIDE_ TOOLBAR 和ID_SHOW_TOOLBAR,只是一种欺骗策略。这些命令的命令处理器最终要做的事情是改变菜单项的ID为其它命令项的ID。具体实现细节我就不讲了,自己做吧。
使用两个ID可能是一种简单的方法,但它不适用于所有情况。例如在MRU文件菜单中,对于每个可能的文件名字你会需要不同的ID。
打开开始菜单中Spy++工具,路径一般在:
"\ Microsoft Visual Studio 20XX \ Visual Studio Tools \ Spy++"
64位的朋友应该有一个“Spy++ (64 位)”,功能没有区别。
Spy++主界面上有一个望远镜的图标,点开望远镜,d出“查找图像窗口”。上面有一个“瞄准星”一样的图标,这个图标是可以鼠标拖动的。
将“瞄准星”拖动到目标窗口;看一下左面显示的窗口标题是不是你要找的窗口;如果是,点击“确定”。
“窗口属性”对话框d出,有“常规、样式、窗口、类、进程”五个选项卡。
“常规”选项卡显示窗口的基本信息;
“窗口”选项卡显示当前窗口句柄,父窗口以及子窗口句柄;
“进程”选q卡显示该窗口的进程和线程ID。
点击“关闭”退出到Spy++主界面。在主界面中可以找到以树状结构显示的窗口隶属关系。右键点击条目,在d出的菜单中选择“消息”,d出消息对话框。消息对话框中显示该窗体或控件接受到的消息。
以上就是关于我ALV标准工具栏中标准按钮怎么显示出来全部的内容,包括:我ALV标准工具栏中标准按钮怎么显示出来、C++ VC MFC 为菜单项增加工具条提示、通过spy++怎样获取工具条内的按钮句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)