孙鑫 第九课之二 工具栏编程笔记

来源:互联网 发布:淘宝 齐峰堂的灰甲清 编辑:程序博客网 时间:2024/06/07 06:44

1 创建工具栏方法一

①创建一个工具栏按钮 

②构造一个CToolBar对象 
③调用 Create 或 CreateEx函数来和工具栏资源绑定到CToolBar对象

④调用LoadToolBar 函数来加载工具栏资源

 eg.  可以按照下面的方式创建工具栏 

CToolBar newToolBar;

int    CMainFrame::OnCreate(LPCREATESTRUCT    lpCreateStruct)

{

if (!newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!newToolBar.LoadToolBar(IDR_XXX))

{

TRACE0("Failed to create toolbar\n");

return -1;      // fail to create

}

newToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY); //CFrameWnd类成员函数: 允许工具栏停靠在它的任何位置

DockControlBar(&m_wndToolBar);//停靠工具栏

 

2 创建工具栏方法二

①构造一个CToolBar对象

②调用 Create 或 CreateEx函数来和工具栏资源绑定到CToolBar对象

③调用LoadBitmap加载一副包含工具栏按钮的位图

④调用SetButtons来设置位图中每个按钮的类型

eg.略

 

3 隐藏/显示工具栏

菜单按钮IDM_SHOW()用来显示/隐藏按钮

void CMainFrame::OnSHOW() 

if(newToolBar.IsWindowVisible())

{

newToolBar.ShowWindow(SW_HIDE);

}

else

{

newToolBar.ShowWindow(SW_SHOW);

}

RecalcLayout();  //重新布局页面

DockControlBar(&newToolBar);  //停靠newToolBar工具栏,当把工具栏拉到客户区中间位置时(悬浮状态),如果没有这句并且在隐藏又显示的时候就会出现bug:工具按钮隐藏了但是工具按钮的载体却没有隐藏。

}

ShowControlBar() 这个函数比①用起来简单

void ShowC?ontrolBar(

CControlBar     *pBar, //工具栏指针

 BOOL      bShow,// bShow为TURE时显示工具栏,FALSE时隐藏工具栏

 BOOL    bDelay //bDelay为TRUE时延迟显示工具栏,FALSE时立即显示

);

void CMainFrame::OnSHOW() 

ShowControlBar( &newToolBar, !newToolBar.IsWindowVisible(), FALSE);

}

③在该菜单上用是否打勾来表示当前是显示/隐藏工具栏

要写在ON_COMMAND_UI函数里,这个函数用来更新菜的可用状态/是否大功等的状态显示 ,而不能用来响应实际命令

CCmdUI::SetCheck

virtual    void    SetCheck(int     nCheck=1);

参数:nCheck

0:不打勾     1:打勾    2:一般不用 只在比如复选框有三种状态的时候用

Specifies the check state to set. If 0, unchecks; if 1, checks; and if 2, sets indeterminate.

 

void CMainFrame::OnUpdateSHOW(CCmdUI* pCmdUI) 

{

// TODO: Add your command update UI handler code here

pCmdUI->SetCheck(newToolBar.IsVisible());  //根据当前工具栏是否可见设置菜单是否打勾

}

 


孙鑫 第九课之二 工具栏编程笔记 - 大灰狼 - 大灰狼 的博客?


 

原创粉丝点击