MFC工具栏和状态栏

小学用6年来期盼初中,初中用三年来渴望高中,高中用三年来憧憬大学,大学用四年来回忆小学到高中,青春就这样结束了。。。

----  网易云热评

相关类:

  CToolBarCtrl - 父类为CWnd,封装了关于各种工具按钮的操作

  CToolBar - 父类为CControlBar,封装了工具栏和框架窗口之间关系

 

一、添加工具栏资源

1、删除按钮时,点击按钮拖拉到其他地方

2、移动按钮位置时,轻轻往后拖拉

 

二、创建工具栏

CToolBar::Create / CToolBar::CreateEx  成员函数

createex(父窗口地址也就是框架窗口地址,工具栏按钮风格,工具栏风格)

1、框架实现消息机制

DECLARE_MESSAGE_MAP()

2、类外面的宏

BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd)    ON_WM_CREATE()END_MESSAGE_MAP()

3、框架声明OnCreate方法

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

4、重写OnCreate方法

 

CBRS_GRIPPER:把手风格CBRS_TOOLTIPS:显示标签|CBRS_FLYBY:鼠标移动到工具栏然后状态栏就显示int CMyFrameWnd::OnCreate(LPCREATESTRUCT lpCreateStruct){    //CToolBar toolbar;    //创建工具栏    toolbar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS);    //加载工具栏    toolbar.LoadToolBar(IDR_TOOLBAR1);        return CFrameWnd::OnCreate(lpCreateStruct);}

 

三、加载工具栏资源

CToolBar::LoadToolBar

 

四、命令消息处理(WM_COMMAND)

ON_COMMAND(工具按钮的ID,处理消息的函数名)

1、添加宏

    ON_COMMAND(ID_XJ, xinjian)    ON_COMMAND(ID_zhi, zhizhizhi)

2、声明函数

afx_msg void xinjian();afx_msg void zhizhizhi();

3、实现函数

void CMyFrameWnd::xinjian(){    AfxMessageBox("哎呦不错哦");}void CMyFrameWnd::zhizhizhi(){    AfxMessageBox("吱吱吱");}

运行结果:

 

五、工具栏的停靠

1、工具栏准备停靠的位置

 

toolbar.EnableDocking(CBRS_ALIGN_ANY);

 

2、框架窗口允许停靠的位置

 

this->EnableDocking(CBRS_ALIGN_ANY);

 

3、框架窗口设置临时停靠的位置

 

this>DockControlBar(&toolbar,AFX_IDW_DOCKBAR_LEFT);

 

运行结果:

六、标签显示

\n前面的内容将会在状态栏显示,后面在标签显示

 

七、工具栏的显示和隐藏

是否打钩

1、添加宏

ON_WM_INITMENUPOPUP( )

2、声明函数

afx_msg void OnInitMenuPopup(CMenu*pPopup, UINT nPos, BOOL i);

3、重写函数

void CMyFrameWnd::OnInitMenuPopup(CMenu*pPopup, UINT nPos, BOOL i){    if( toolbar.IsWindowVisible() ){        pPopup->CheckMenuItem(ID_TOOL, MF_CHECKED);    }else{        pPopup->CheckMenuItem(ID_TOOL, MF_UNCHECKED);    }}

点击工具栏,打钩显示,去了不显示

1、添加宏

 

ON_COMMAND(ID_gjl, gjlxs)

2、声明函数

afx_msg void gjlxs();

3、重写函数

void CMyFrameWnd::gjlxs(){    if (toolbar.IsWindowVisible()) {        this->ShowControlBar(&toolbar, FALSE, FALSE);    }    else {        this->ShowControlBar(&toolbar, TRUE, FALSE);    }}

 

八、状态栏相关类

CStatusBar - 父类为CControlBar,封装了关于状态栏的各种操作

九、使用方法

1、定义一个状态栏对象

CStatusBar statusbar;

2、在Oncreate里面创建

statusbar.CreateEx( this );

3、设置状态栏指示器

由于上面在工具栏设置过状态栏信息,所以可以在资源里自动生成string table

创建几个id,标题用空格,要不显示不来

定义一个全局数组

UINT g_hIndicator[] = {    0,    IDS_TIME,    IDS_POS};

statusbar.SetIndicators(g_hIndicator, 3);

4、设置指示器的风格和宽度

 CStatusBar::SetPaneInfo(索引,id,风格,宽度)

5、设置定时器

::SetTimer(句柄, 1, 间隔, 设置为空及默认处理);

6、添加处理宏

ON_WM_TIMER()

7、声明函数

afx_msg void OnTimer(UINT timeid);

8、重写函数

void CMyFrameWnd::OnTimer(UINT timeid){    SYSTEMTIME st;    ::GetLocalTime(&st);    CString str;    str.Format("%d-%d-%d %d:%d:%d", st.wYear, st.wMonth, st.wDay,        st.wHour, st.wMinute, st.wSecond);    statusbar.SetPaneText(1, str);}

运行结果:

 

欢迎关注公众号:顺便编点程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web安全工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值