MFC里如何初始化ToolBar的大小和位置

如题所述

    第一步:在CMainFrame类里添加保护成员  CToolBar m_wndDrawToolBar;

    第二步:ToolBar的ID号为:IDR_TOOLBAR,在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)里添加代码:
    if (!m_wndDrawToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndDrawToolBar.LoadToolBar(IDR_TOOLBAR))
    {
    TRACE0("Failed to create Draw toolbar\n");
    return -1;      // fail to create
    }
    m_wndDrawToolBar.EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndDrawToolBar);
    DockControlBarLeftOf(&m_wndDrawToolBar, &m_wndToolBar);//第三步里的成员函数

    第三步:在CMainFrame里添加公有成员函数:void DockControlBarLeftOf(CToolBar* leftBar, CToolBar* rightBar);
    函数具体代码为:
    void CMainFrame::DockControlBarLeftOf(CToolBar *leftBar, CToolBar *rightBar)
    {
    // 设置工具条并列停靠在同一条边上 
    CRect rect; // 矩形区域定义 
    DWORD dw; 
    UINT n = 0; 

    RecalcLayout(); //重新显示 
    rightBar->GetWindowRect(&rect);
    rect.OffsetRect(1, 0);

    dw=rightBar->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(leftBar, n, &rect);
    }

温馨提示:内容为网友见解,仅供参考
无其他回答

MFC里如何初始化ToolBar的大小和位置
第一步:在CMainFrame类里添加保护成员 CToolBarm_wndDrawToolBar;第二步:ToolBar的ID号为:IDR_TOOLBAR,在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)里添加代码:if (!m_wndDrawToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS...

MFC单文档程序的菜单栏怎么修改高度和宽度?
在资源编辑器中,选中任意一个toolbar的图标,拉伸大小,即可改变整个工具栏的高度和宽度。但从CMenu继承的标准菜单栏是没法改变宽高的,一般来说,只能通过重载后DrawItem修改字体大小来改变高度,宽度可以通过空格或者\\t制表符来控制。另外,WM_MEASUREITEM消息可以更改弹出菜单的高度,但对MFC标准菜单貌似无...

mfc怎样设置工具栏的位置
CFrameWnd::DockControlBar也可以改变位置 DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_BOTTOM);DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_BOTTOM);void DockControlBar( CControlBar* pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL);浮动工具条可以调用CFrameWnd::FloatContro...

MFC 工具栏 尺寸设置
void SetSizes(SIZE sizeButton,SIZE sizeImage);设置工具栏按钮的大小和图片的大小。参数sizeButton为工具栏按钮的像素大小。参数sizeImage为图片的像素大小。SetButtonWidth 设置按钮的宽度

...mfc工程 只想加一个有四个按钮的toolbar 请问怎么把这个toolbar(idr...
tab.nID=IDR_TOOLBAR1;iBmp=::SendMessage(hToolsWindow,TB_ADDBITMAP,(WPARAM)3,(LPARAM)&tab);向工具条添加工具条按钮的关键在于对TBBUTTON数据结构的填充,该数据结构也是在CommCtrl.h头文件中定义的,原形为:typedef struct _TBBUTTON { int iBitmap;int idCommand;BYTE fsState;BYTE fsStyle;...

mfc中的CMFCToolBar类怎么实现工具栏上的按钮多行显示??急!!!_百 ...
回答:你可以将CToolBar创建在CReBar上面,你要多行显示,就创建多个CToolBar与CReBar上。 CRebar类似于toolbar,但其比toolbar更好用,可以防止按钮,下拉框和toolbar.

在MFC中工具栏如何加载上去的
建立多文档工程,在,CMainFrame::OnCreate函数中有如何创建工具栏的代码:代码如下:if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | RS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){ TRA...

MFC工具栏位置问题
或者用CFrameWnd::DockControlBar DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_BOTTOM);void DockControlBar( CControlBar* pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL);至于EnableDocking是 "将要" 停靠在哪,或者说允许停靠在哪 如果要使工具条浮动,调用CFrameWnd::FloatControl...

mfc单文档工具栏最大化-还原-最大化后会移位,怎么防止它移位啊_百度...
如果你没有记录各个工具条在ReBar上面的位置,那么每次重开程序都会重新初始化位置的,只是对窗口放大缩小固化位置没有意义。如果你关注一下其它微软程序(VC\/WORD),就会发现它关闭程序会记录位置,但并不禁止窗口变化后的自动调节,因为toolbar都有停靠属性,也就是它默认都会在窗口变化后找到一个“合理”...

怎样限制bcgpdockingcontrolbar窗口大小
修改应用程序窗口的大小和标题,有两种方式:第一 在创建窗口之前修改,第二 在创建窗口之后修改 首先利用MFC向导建立一个单文档的工程 第一种:在创建窗口之前修改:BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CFrameWnd::PreCreateWindow(cs) )return FALSE;\/\/ TODO: Modify the ...

相似回答