如何往基于Dialog的程序添加工具栏
来源:互联网 发布:ubuntu安装后的20件事 编辑:程序博客网 时间:2024/06/11 19:27
米度软件:www.midosoft.cn
一、添加工具栏
[1] 先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮。
[2] 在CDlgMenuToolbarDlg类声名中添加成员变量 CToolBar m_wndtoolbar;
[3] 在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代码
//添加一个平面工具条if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS, CRect(4,4,0,0)) ||!m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) ){TRACE0("failed to create toolbar/n");return FALSE;}m_wndtoolbar.ShowWindow(SW_SHOW);RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
二、为工具栏添加工具提示
[3.1] 在CDlgMenuToolbarDlg类定义中手工添加消息映射函数的定义,如下黑体部分
//{{AFX_MSG(CDlgMenuToolbarDlg)virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);//}}AFX_MSGDECLARE_MESSAGE_MAP()
[3.2] 在CDlgMenuToolbarDlg.cpp添加函数的实现代码
//工具栏提示BOOL CDlgMenuToolbarDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult){ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);// UNICODE消息TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;//TCHAR szFullText[512];CString strTipText;UINT nID = pNMHDR->idFrom;if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND)){// idFrom为工具条的HWND nID = ::GetDlgCtrlID((HWND)nID);}if (nID != 0) //不为分隔符{strTipText.LoadString(nID);strTipText = strTipText.Mid(strTipText.Find(''/n'',0)+1);#ifndef _UNICODEif (pNMHDR->code == TTN_NEEDTEXTA){lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));}else{_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));}#elseif (pNMHDR->code == TTN_NEEDTEXTA){_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));}else{lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));}#endif*pResult = 0;// 使工具条提示窗口在最上面::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); return TRUE;}return TRUE;}
[3.3] 在CDlgMenuToolbarDlg.cpp中添加消息映射,请看如下代码中的黑体部分
BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog)//{{AFX_MSG_MAP(CDlgMenuToolbarDlg)ON_WM_PAINT()ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )//}}AFX_MSG_MAPEND_MESSAGE_MAP()
三、其它
为了使你的程序看起来更酷,还可以在CDlgMenuToolbarDlg::OnPaint()中修改代码实现Dialog 填充颜色。
CPaintDC dc(this);CRect rect; GetClientRect(rect); dc.FillSolidRect(rect, RGB(60,110,170));
好了,编译运行看看效果吧!希望本文能够给您一些提示!
米度软件:www.midosoft.cn
- 如何往基于Dialog的程序添加工具栏
- 如何在基于Dialog的程序中添加menu菜单 ?
- mfc dialog 添加工具栏
- 二、基于单文档程序 在工具栏添加进度条
- MFC 对话框程序如何添加目录,工具栏,状态栏
- MFC程序如何去掉上面的工具栏
- mfc工具栏的添加
- 如何更改添加工具栏按钮图标
- java中如何添加工具栏
- QtDesigner如何添加工具栏toolBar
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- QT 如何向工具栏中添加漂亮的图标
- 如何给基于对话框的应用程序加入一个工具栏?
- 基于对话框程序,自定义工具栏(支持真彩色图标,可添加文字)
- [VC]基于对话框程序,自定义工具栏(支持真彩色图标,可添加文字)
- MFC 基于对话框 程序,如何添加状态栏
- MFC 基于对话框 程序,如何添加菜单栏
- epoll使用详解
- 年轻人少奋斗8年 成功赚钱10个方法
- 钩子(Hook)教程
- 北邮08复试模拟problem C
- 知名杀毒软件之100种病毒检测效果
- 如何往基于Dialog的程序添加工具栏
- 大明A+B hdu1753
- 七招减少沙尘对人体危害
- delphi 十六进制转十进制
- Pyke 逻辑编程入门(14):知识库之“事实库”
- 表单验证
- [Trouble Shoot]Struts2和Tile2
- 在java代码中sql语句出现start before result set的错误解决办法
- 播放歌曲文件