我刚刚尝试了添加CToolbar到新CMFCToolBar对话框的标准方法。但它不起作用。 Befor我倾向于新的实现,我想知道它是否可行?是否可以将CMFCToolBar添加到对话框中?
2
A
回答
6
我不知道你所说的“标准方法”的意思,但你一定可以做到这一点编程:
// In MyDlg.h
class CMyDlg : public CDialog
{
...
CMFCToolBar m_ToolBar;
...
};
// In MyDlg.cpp
BOOL CMyDlg::OnInitDialog()
{
...
if(m_ToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, 100))
{
m_ToolBar.SetPaneStyle(m_ToolBar.GetPaneStyle()
& ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_ANY));
m_ToolBar.InsertButton(CMFCToolBarButton(ID_APP_ABOUT, -1, _T("About")));
m_ToolBar.InsertButton(CMFCToolBarButton(ID_APP_EXIT, -1, _T("Exit")));
CSize sizeToolBar = m_ToolBar.CalcFixedLayout(FALSE, TRUE);
m_ToolBar.SetWindowPos(NULL, 0, 0, sizeToolBar.cx, sizeToolBar.cy,
SWP_NOACTIVATE | SWP_NOZORDER);
}
...
}
0
以上OnInitDialog
不除的情况下工作得很好,其中的命令是一个对话框 - 只有命令。
如果没有应用程序或主框架处理程序,则按钮将自行禁用并且不调用处理程序。请注意,上面的代码路由正确,因为ID_APP_ABOUT
和ID_APP_EXIT
已经有CWinAppEx
处理程序。
不涉及覆盖OnCmdMsg
的解决方法是在应用程序或主框架级别添加处理程序。工具栏然后保持活动状态,并将正确找到正确的对话框处理程序。将一个简单的void处理程序添加到CMainFrame
就可以做到这一点(下面的示例代码)。 void处理程序不被调用。
BOOL CMyDlg::OnInitDialog()
{
...
m_ToolBar.InsertButton(CMFCToolBarButton(**ID_DLG_COMMAND**, -1, _T("DlgCommand")));
...
}
//CMainFrame
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
...
ON_COMMAND(**ID_DLG_COMMAND**, VoidHandler)
END_MESSAGE_MAP()
void CMainFrame::VoidHandler()
{
assert(0);
}
1
如果你只需要处理对话框的命令只诀窍是SetRouteCommandsViaFrame设置为FALSE。然后,所有者(通常是对话框)将用于命令而不是主框架。
相关问题
- 1. 将检查组合框添加到CMFCToolbar
- 2. 是否有可能将表单添加到jquerymobile对话框?
- 3. 运行时是否可以将唯一ID添加到对话框中?
- 4. 是否可以在wix中添加卸载对话框?
- 5. 是否可以将应用程序添加到本机共享对话框?
- 6. 是否可以将PDF嵌入到jQuery UI对话框中?
- 7. 如何将对话框添加到默认对话框中
- 8. 是否可以将MouseMotionListener添加到BufferedImage?
- 9. 是否可以在CMFCToolbar中的CMFCToolBarComboBoxButton上添加自定义工具提示?
- 10. 是否可以将本地化添加到预编译框架?
- 11. 是否可以将MovieClip添加到列表框? Flash AS3
- 12. 将进度对话框添加到storefile();
- 13. 将EditText添加到警报对话框。
- 14. 将Facebook添加到Facebook Feed对话框
- 15. 将EditText添加到对话框
- 16. 将确认对话框添加到EventToCommand
- 17. 如何将CMFCPropertyGridCtrl添加到对话框
- 18. 将片段添加到对话框
- 19. 如何将spin.js添加到对话框
- 20. 将按钮添加到对话框
- 21. 将内容添加到dijit对话框
- 22. 是否可以将我们的对称算法添加到OpenSSL?
- 23. CKEditor:在加载iframe之前将对话框添加到对话框中
- 24. 如何将jquery数组添加到html表单中以将复选框动态添加到对话框中
- 25. 如何添加是/否对话框到jquery移动页面?
- 26. 是否可以将新规则添加到正在运行的Drools会话中?
- 27. 是否可以将方法添加到集合中的类中?
- 28. 是否可以将CCLabel添加到CCSpriteBatchNode中的CCSprite中?
- 29. 是否可以将ImageButton添加到GalleryView中的图像中?
- 30. 如何将对话框添加到WYMEditor以捕捉选择?
谢谢!这对我来说很好。 – mem64k 2009-07-01 08:15:14