有两个工具栏这么显示在第一排

adfasdfasdfasdfadf 2003-08-21 04:13:35
就是创建了两个CToolBar,这么让他们运行的时候一起出来,并且放在一排,而不是2排,放在两排,客户区就感觉比较小了
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
adfasdfasdfasdfadf 2003-08-21
  • 打赏
  • 举报
回复
那位大侠帮忙看看阿,这么让m_wndPicViewBar显示在m_wndMainViewBar的右边而不是下面阿
adfasdfasdfasdfadf 2003-08-21
  • 打赏
  • 举报
回复
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
EnableDocking(CBRS_ALIGN_ANY);
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

if (!CreateToolBar())
return -1;

m_wndMainFrameToolBar.EnableDocking( CBRS_ALIGN_ANY );
m_wndPgisToolBar.EnableDocking( CBRS_ALIGN_ANY );
m_wndDrawSettingBar.EnableDocking( CBRS_ORIENT_HORZ );
m_wndFaultToolBar.EnableDocking( CBRS_ALIGN_ANY );
m_wndMainViewBar.EnableDocking( CBRS_ALIGN_ANY );
m_wndPortValBar.EnableDocking( CBRS_ALIGN_ANY );//整定计算工具条
m_wndPicViewBar.EnableDocking( CBRS_ALIGN_ANY );//图形预览工具条
m_wndRunModeBar.EnableDocking( CBRS_ALIGN_ANY );//系统方式工具条

DockControlBar(&m_wndMainFrameToolBar,AFX_IDW_DOCKBAR_TOP);
DockControlBar(&m_wndPgisToolBar,AFX_IDW_DOCKBAR_TOP);
DockControlBar(&m_wndDrawSettingBar,AFX_IDW_DOCKBAR_TOP);
DockControlBar(&m_wndFaultToolBar,AFX_IDW_DOCKBAR_LEFT);
DockControlBar(&m_wndMainViewBar,AFX_IDW_DOCKBAR_TOP);
DockControlBar(&m_wndPortValBar,AFX_IDW_DOCKBAR_LEFT);
// DockControlBar(&m_wndPicViewBar,AFX_IDW_DOCKBAR_TOP);
DockControlBar(&m_wndRunModeBar,AFX_IDW_DOCKBAR_LEFT);
CRect rectToolBar;
m_wndMainViewBar.GetWindowRect(&rectToolBar);
rectToolBar.OffsetRect(1,0);
DockControlBar(&m_wndPicViewBar,AFX_IDW_DOCKBAR_TOP,rectToolBar);
}
这个样子还是不行阿,还是两排,我在
void CChildFrame::ShowDrawToolBar( BOOL bShow )
{
else if(iStat == STAT_FAULT)
{
pBar = pFrame->GetControlBar(IDW_MAINVIEW_TOOLBAR);
ASSERT(pBar != NULL);
pFrame->ShowControlBar(pBar, TRUE, TRUE);

pBar = pFrame->GetControlBar( IDW_PICVIEW_TOOLBAR );
ASSERT( pBar != NULL );
pFrame->ShowControlBar( pBar, TRUE, TRUE );

pBar = pFrame->GetControlBar( IDW_FAULT_TOOLBAR );
ASSERT( pBar != NULL );
pFrame->ShowControlBar( pBar, TRUE, TRUE );

pBar = pFrame->GetControlBar(IDW_RUNMODE_TOOLBAR);
ASSERT(pBar != NULL);
pFrame->ShowControlBar(pBar, TRUE, TRUE);
}
else if(iStat == STAT_MAINVIEW)
{
pBar = pFrame->GetControlBar( IDW_MAINVIEW_TOOLBAR );
ASSERT( pBar != NULL );
pFrame->ShowControlBar( pBar, TRUE, TRUE );

pBar = pFrame->GetControlBar( IDW_PICVIEW_TOOLBAR );
ASSERT( pBar != NULL );
pFrame->ShowControlBar( pBar, TRUE, TRUE );
}
}
图形中要切换不同的功能项,对应出来不同的工具项,你再看看
思危 2003-08-21
  • 打赏
  • 举报
回复
并列工具条的停靠控制
很多大型应用程序中都存在将多个工具条同时并列停靠在某窗口的某一条边上的情
况。对这种停靠方法,可利用上述工具条控制函数DockControlBar的lpRect参数,通过控
制工具条的停靠矩形区域的方法来实现。实现的函数如下:
1. 在实现文件MainFrm.h中增加如下成员函数定义:
void DockControlBarLeftOf(CToolBar*Bar,CToolBar* LeftOf);
2. 在实现文件MainFrm.cpp中增加如下成员函数:
void CMainFrame::DockControlBarLeftOf(CToolBar* Bar,CTooIBar* LeftOf)
{
// 设置工具条并列停靠在同一条边上
CRect rect; //矩形区域定义
DWORD dw;
UINT n=0;
RecalcLayout(); //重新显示
LeftOf->GetWindowRect(&rect);
rect.Offset(1,0); //设置偏移植以停靠在同一边上
dw=LeftOf->GetBarStyle();
n=(dw&CBRS_ALIGN_TOP)?AFX_IDW_DOCKBAR_TOP:n;
n=(dw&CBRS_ALIGN_BOTTOM&&n==0)?AFX_IDW_DOCKBAR_BOTTOM:n;
n=(dw&CBRS_ALIGN_LEFT&&n==0)?AFX_IDW_DOCKBAR_LEFT:n;
n=(dw&CBRS_ALIGN_RIGHT&&n==0)?AFX_IDW_DOCKBAR_RIGHT:n;
DockControlBar(Bar,n,&rect);
}
在这个函数中应注意对RecalcLayout()函数和OffestRect()函数的调用,前者用来
重新显示被调整的客户区和工具条,后者用来重新确定矩形区域,这相当于利用鼠标将第
二个工具条窗口拖动到前一个工具条上然后释放。
adfasdfasdfasdfadf 2003-08-21
  • 打赏
  • 举报
回复
这么没有人理我阿,是不是分数太少了?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧