如何在对话框中加入两个水平排放的工具条?
我虽然成功创建了两个工具条,但始终只能显示第一个。
在我的代码中调用了RepositionBars函数,从返回的结果来看,这两个工具条是垂直排放的,但无论如何也没有办法把他们水平排放。
如何解决!!!
我虽然成功创建了两个工具条,但始终只能显示第一个。
在我的代码中调用了RepositionBars函数,从返回的结果来看,这两个工具条是垂直排放的,但无论如何也没有办法把他们水平排放。
如何解决!!!
解决方案 »
- 求BT客户端库或者VS2008能运行源码。。
- CreateCompatibleBitmap有人懂吗
- 读取GPS定向数据的VC程序怎么写??
- 五折出售《MFC Windows 程序设计》,《VC技术内幕4》,《深入浅出MFC》,《WINDOWS程序设计》,全新!
- 怎么封装一个DLL,从磁盘上加载图片到CWnd或派生类上?
- 如何找到CJlibary的完全安装版本,请给一个连接
- 对话框资源使用的小问题!
- 请问tcsstr和strstr的用法区别,以及shellexecute 和winexec地区别
- 怎么把一段文本加载入ie控件?
- C++多功能聊天室,网上找的代码,发送文件没问题,但是点击接收文件时就卡住了,希望大家帮我看看问题,下面是接收文件的代码
- vb下怎么调用API函数呢?49分立刻送到
- 88分吉祥大赠送!我编的免费发短信软件,欢迎测试!
CToolBar ToolBar1;
CToolBar ToolBar2;
然后Create出来
直接用MoveWindow()函数 把两个工具条显示出来 就可以了
m_wndColorBar是CMainFrame类的一个CToolBar的Protected变量。int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| 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
} //swh
int iTBCtlID;
int i;
if(!m_wndColorBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)
||!m_wndColorBar.LoadToolBar(IDR_TOOLBAR1))
{
return -1;
} iTBCtlID=m_wndColorBar.CommandToIndex(ID_COLOR_BLACK);
if(iTBCtlID>=0)
{
for(i=iTBCtlID;i<(iTBCtlID+4);i++)
m_wndColorBar.SetButtonStyle(i,TBBS_CHECKGROUP);
} //swh if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
} // TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar); return 0;
}
然后进行停靠控制:
EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar1.EnableDocking(CBRS_ALIGN_TOP);
DockControlBar(&m_wndToolBar);
EkDockBarNextTo(&m_wndToolBar2,&m_wndToolBar1);//函数定义如下
void CMainFrame::EkDockBarNextTo( CControlBar* pNewBar,
CControlBar* pDockedBar,
UINT nDockBarID=AFX_IDW_DOCKBAR_TOP )
{
ASSERT_VALID( pDockedBar );
ASSERT_VALID( pNewBar ); // 1 - 找到要停靠的框架窗口
CFrameWnd* pFrame = pDockedBar->GetDockingFrame(); // 2 - 强制 MFC计算停靠工具栏的位置
pFrame->RecalcLayout(); // 3 - 计算已经停靠控制栏的矩形面积
CRect rect;
pDockedBar->GetWindowRect( &rect );//屏幕坐标:134,311,284,668 // 4 -将矩形面积沿x,y轴偏移一个单位,这样新的控制栏可以停靠
//在已有控制栏的右边和底部
rect.OffsetRect(-1,-1); // 5 - 停靠新的工具栏
pFrame->DockControlBar( pNewBar, nDockBarID, &rect );
}