在我的程序中使用了3个很短的工具条,我想将它们放在同一行上。向高手请教,先谢了!
解决方案 »
- CreateWindow() 创建LISTVIEW 报错
- hook timeGetTime getTickCount的问题
- constraint 是干什么用的,reserence 是干什么用的
- MFC中的输出结果写入ACCESS!
- VC6下MSXML问题
- ListView中图标自动排列成这样?好像在文件名称很长的时候就一定会出现。不知道是哪个属性没有设置?
- 动画闪烁的问题
- CInternetSession 构造函数的问题
- 如何对Static控件进行操作
- 为什么有这样的警告?
- 如何在DialogBar上绘图?
- 请问在PreTranslateMessage(MSG* lpmsg) 中如何调用OnLButtonDblClk()?
并不会达到你想要的效果,下面这个函数演示了怎样一个接一个的停靠void 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 );// 4 -将矩形面积沿x,y轴偏移一个单位,这样新的控制栏可以停靠
在已经已有控制栏的右边和底部
rect.OffsetRect(1,1);// 5 - 停靠新的工具栏
pFrame->DockControlBar( pNewBar, nDockBarID, &rect );
} 下面是这个函数的用法
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;// ...
// Create toolbars and status bar
// ...// Mainframe docking
EnableDocking(CBRS_ALIGN_ANY);// 基本工具栏停靠在左上角
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar( &m_wndToolBar, AFX_IDW_DOCKBAR_TOP );// Shapes 工具栏停靠在顶部,紧挨基本工具栏
m_wndTBshapes.EnableDocking(CBRS_ALIGN_ANY);
EkDockBarNextTo( &m_wndTBshapes, &m_wndToolBar,
AFX_IDW_DOCKBAR_TOP );// Colors1 工具栏停在顶部,紧挨shapes工具栏
m_wndTBcolors1.EnableDocking(CBRS_ALIGN_ANY);
EkDockBarNextTo( &m_wndTBcolors1, &m_wndTBshapes,
AFX_IDW_DOCKBAR_TOP );// Demo 工具栏停在左边
m_wndTBdemo.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar( &m_wndTBdemo, AFX_IDW_DOCKBAR_LEFT );// Colors2 工具栏停在demo右边
m_wndTBcolors2.EnableDocking(CBRS_ALIGN_ANY);
EkDockBarNextTo( &m_wndTBcolors2, &m_wndTBdemo,
AFX_IDW_DOCKBAR_LEFT );return 0;
}