怎样让MFC工具栏停靠在左侧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样让MFC工具栏停靠在左侧相关的知识,希望对你有一定的参考价值。
我想程序一开始,工具栏就停靠在左侧,而不是运行后,再用鼠标去拖到左侧停靠。(我是初学者,希望哪位高手说得清楚点,小弟感激不尽)
参考技术A if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
本回答被提问者采纳
MFC 停靠窗口及其停靠位置
【中文标题】MFC 停靠窗口及其停靠位置【英文标题】:MFC docking windows and where they dock 【发布时间】:2010-03-02 17:38:02 【问题描述】:我已经创建(生成)了一个带有选项卡式文档的 MDI 项目 VS2008 专业版。 Visual Studio 使用文件/类视图生成应用程序 窗口、属性窗口、输出窗口和第一个MDI文件/ 看法。
我想控制 windows 停靠的边。我以为这个 在 BOOL CMainFrame::CreateDockingWindows() 中完成,我改变了 CBRS_TOP 到 CBRS_BOTTOM 和 CBRS_RIGHT 到 CBRS_LEFT ,但窗口 在客户区还是一样。没有什么不同的 什么用于 CBRS_xxxx 的窗口样式属性。地点和方式 我可以控制这些窗口停靠在客户区的什么位置吗? 我当时换了:
BOOL CMainFrame::CreateDockingWindows()
BOOL bNameValid;
// Create class view
CString strClassView;
bNameValid = strClassView.LoadString(IDS_CLASS_VIEW);
ASSERT(bNameValid);
if (!m_wndClassView.Create(strClassView, this, CRect(0, 0, 200, 200), TRUE,ID_VIEW_CLASSVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
TRACE0("Failed to create Class View window\n");
return FALSE; // failed to create
// Create file view
CString strFileView;
bNameValid = strFileView.LoadString(IDS_FILE_VIEW);
ASSERT(bNameValid);
if (!m_wndFileView.Create(strFileView, this, CRect(0, 0, 200, 200),TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | CBRS_LEFT| CBRS_FLOAT_MULTI))
TRACE0("Failed to create File View window\n");
return FALSE; // failed to create
// Create output window
CString strOutputWnd;
bNameValid = strOutputWnd.LoadString(IDS_OUTPUT_WND);
ASSERT(bNameValid);
if (!m_wndOutput.Create(strOutputWnd, this, CRect(0, 0, 100, 100),
TRUE, ID_VIEW_OUTPUTWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI))
TRACE0("Failed to create Output window\n");
return FALSE; // failed to create
// Create properties window
CString strPropertiesWnd;
bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND);
ASSERT(bNameValid);
if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |CBRS_RIGHT | CBRS_FLOAT_MULTI))
TRACE0("Failed to create Properties window\n");
return FALSE; // failed to create
SetDockingWindowIcons(theApp.m_bHiColorIcons);
return TRUE;
有人可以帮我解释一下如何控制边 这些窗口停靠? 谢谢。
【问题讨论】:
【参考方案1】:IIRC、CBRS_TOP 等是针对它们可以停靠的位置,而不是它们在您启动应用程序时停靠的位置。保存在注册表中,基本上会显示上次关闭应用程序时的位置。
在过去(这不适用于 Feature Pack 停靠框架)如果您想在启动时停靠到特定的一侧,您必须将您希望工具栏停靠的一侧设置为唯一允许的一侧(例如右边),创建工具栏,停靠它(有一个 SetDocked() 或类似的东西),然后将允许的停靠边修改为您想要允许的方向。我不确定这种行为在当前版本中是否仍然存在,但我认为它确实存在,因为这是建立在低级停靠工具栏功能之上的东西,而功能包的东西只是建立在它之上。
不是一个真正的答案,但希望它能帮助你...
【讨论】:
以上是关于怎样让MFC工具栏停靠在左侧的主要内容,如果未能解决你的问题,请参考以下文章
MFC文档应用程序CToolBar:设置两个工具条并列停靠到同一条边上 转