MFC Windows程序设计--工具栏,状态栏,组合栏
来源:互联网 发布:河北工龄工资算法 编辑:程序博客网 时间:2024/06/05 03:32
工具栏
CToolBar,CStatusBar, CReBar
CToolBar<–CToolBarCtrl
工具栏是应用程序主框架窗口的子窗口。
// 默认样式 WS_CHILD | WS_VISIBLE | CBRS_TOP
// 默认ID AFX_IDW_TOOLBAR
m_wndToolBar.Create(this);
新建立的工具栏是空的,下一步是向其添加按钮。
CToolBar::LoadBitmap
CToolBar::SetButton
// RCIDR_TOOLBAR BITMAP Toolbar.bmp// cppstatic UINT bButtonIDs[] = { ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_SAVE, ID_FILE_SEPARATOR, ...};m_wndToolBar.Create(this);m_wndToolBar.LoadBitmap(IDR_TOOLBAR);m_wndToolBar.SetButtons(nButtonIDs, 10);
CToolBar::SetSize 可改变图像和按钮尺寸。
// RCIDR_TOOLBAR BITMAP Toolbar.bmpIDR_TOOLBAR TOOLBAR 16, 15BEGIN BUTTON ID_FILE_NEW BUTTON ID_FILE_OPEN BUTTON ID_FILE_SAVE SEPARATOR ...END// cppm_wndToolBar.Create(this);m_wndToolBar.LoadToolBar(IDR_TOOLBAR);// 可以在按钮表面除图形外,添加文字描述m_wndToolBar.SetButtonText(0, _T("New"));...// 在调用了SetButtonText后,必须调用。// 用来指定按钮尺寸 和 图形尺寸。m_wndToolBar.SetSize(CSize(48, 42), CSize(40, 19));// 设置按钮风格m_wndToolBar.SetButtonStyle(0, TBBS_CHECKBOX);...// 给 工具栏添加单选按钮时,应在每组中选中一个成员作为默认int nState = m_wndToolBar.GetToolBarCtrl().GetState(ID_PARA_LEFT);m_wndToolBar.GetToolBarCtrl().SetState(ID_PARA_LEFT, nState | TBSTATE_CHECKED);
固定和浮动式工具栏
CControlBar::EnableDocking
CFrameWnd::EnableDocking
位标志。
CBRS_ALIGN_LEFT 允许放在框架窗口左侧
CBRS_ALIGN_RIGHT 右
CBRS_ALIGN_TOP 顶
CBRS_ALIGN_BOTTOM 底
CBRS_ALIGN_ANY
m_wndToolBar.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);EnableDocking(CBRS_ALIGN_ANY);
CFrameWnd::DockControlBar
CFrameWnd::FloatControlBar
CControlBar::IsFloating
CToolBar::SetWindowText
工具栏样式:
CBRS_SIZE_DYNAMIC
CBRS_SIZE_FIXED
TBBS_WRAPPED
m_wndToolBar.Create(this);m_wndToolBar.LoadToolBar(IDR_TOOLBAR);m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_SIZE_FIXED);m_wndToolBar.SetButtonStyle(2, m_wndToolBar.GetButtonStyle(0) | TBBS_WRAPPED);m_wndToolBar.SetButtonStyle(5, m_wndTool.GetButtonStyle(0) | TBBS_WRAPPED);EnableDocking(CBRS_ALIGN_ANY);m_wndToolBar.EnableDocking(0);FloatControlBar(&m_wndToolBar, CPoint(x, y));
工具栏可见性:
CFrameWnd::OnBarCheck // 切换 工具栏/状态栏 显示/隐藏状态
CFrameWnd::OnUpdateControlBarMenu
ON_COMMAND_EX 可接受UINT参数,来传递ID。
CFrameWnd::ShowControlBar
菜单项目更新:主框架响应WM_INITMENUPOPUP
工具栏更新:应用程序无消息处理时。
不必改变按钮样式,利用更新处理程序就可以让工具栏按钮成为 复选/单选。
添加工具栏提示和状态栏工具说明:
光标在工具栏按钮上停一会,屏幕上出现提示窗口。
要求
1.工具栏样式有:CBRS_TOOLTIPS
2.包含工具提示文本的字符串资源
// RCIDR_TOOLBAR BITMAP Toolbar.bmpIDR_TOOLBAR TOOLBAR 16, 15BEGIN BUTTON ID_CHAR_BOLD BUTTON ID_CHAR_ITALIC BUTTON ID_CHAR_UNDERLINE SEPARATOR BUTTON ID_PARA_LEFT BUTTON ID_PARA_CENTER BUTTON ID_PARA_RIGHTENDSTRINGTABLEBEGIN ID_CHAR_BOLD "\nBold" ID_CHAR_ITALIC "\nItalic" ID_CHAR_UNDERLINE "\nUnderLine" ID_PARA_LEFT "\nAlign Left" ID_PARA_CENTER "\nAlign Center" ID_PARA_RIGHT "\nAlign Right"END// cppm_wndToolBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS);m_wndToolBar.LoadToolBar(IDR_TOOLBAR);
如应用程序 既有状态栏又有工具栏,在 工具栏设置 CBRS_FLYBY,可使工具栏显示状态栏 工具说明。
// 在工具栏添加非按钮控件// 1.在TOOLBAR资源中添加一个 按钮分隔符或空白按钮ID_TOOLBAR TOOLBAR 16, 15BEGIN BUTTON ID_CHAR_BOLD BUTTON ID_CHAR_ITALIC BUTTON ID_CHAR_UNDERLINE SEPARATOR BUTTON ID_PARA_LEFT BUTTON ID_PARA_CENTER BUTTON ID_PARA_RIGHT SEPARATOR // space between button and combobox SEPARATOR // placeholder for comboboxEND// 2.派生CToolBar,添加成员// CToolBar::SetButtonInfoCMyToolBar::OnCreate(...){ ... SetButtonInfo(8, IDC_COMBOBOX, TBBS_SEPARATOR, nWidth); CRect rect; GetItemRect(8, rect); rect.bottom = rect.top + nHeight; m_wndComboBox.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_SORT | CBS_DROPDOWNLIST, rect, this, IDC_COMBOBOX);}// 组合框隶属于工具栏,工具栏移动时,其也移动。// 工具栏接收组合框WM_COMMAND。// 更新非按钮控件void CMyToolBar::OnUpdateCmdUI(CFrameWnd *pTarget, BOOL bDisableIfNoHandler){ CToolBar::OnUpdateCmdUI(pTarget, bDisableIfNoHandler); CString string = GetTypefaceAtCaret(); if(m_wndComboBox.SelectString(-1, string) == CB_ERR) { m_wndComboBox.SetCurSel(-1); }}
使工具栏设置永久化
// 将工具栏的 停放位置,浮动状态,等信息写入磁盘CFrameWnd::SaveBarStateCFrameWnd::LoadBarState
CWinApp::SetRegistryKey // 使注册表可用
应用程序正常关闭,会进 CFrameWnd::OnClose
应用程序运行时,Windows关闭,会进OnEndSession
窗口清除顺序:
弹出式窗口–>框架窗口–>框架窗口子窗口
状态栏
CStatusBar
创建,初始化状态栏
在资源文件以字符串资源形式提供帮助文本。
状态栏可以划为为多个区域。
创建,初始化状态栏:
// 样式和ID采用默认值m_wndStatusBar.Create(this);// CStatusBar::SetIndicators 将状态栏初始化UINT nIndicator = ID_SEPARATOR;m_wndStatusBar.Create(this);m_wndStatusBar.SetIndicators(&nIndicator, 1);// RCSTRINGTABLEBEGIN ID_INDICATOR_INS "INS"END// cppON_UPDATE_COMMAND_UI(ID_INDICATOR_INS, OnUpdateIndicator)CMainFrame::OnCreate(...){ static UINT nIndicators[] = { ID_SEPARATOR, ID_INDICATOR_INS, }; m_wndStatusBar.Create(this); m_wndStatusBar.SetIndicators(nIndicators, 2);}void CMainFrame::OnUpdateIndicators(...){ pCmdUI->Enable(m_bInsert);}
当状态栏第一个窗格ID为ID_SEPARATOR时,启用一个功能。
:用户加亮显示某菜单项时,主框架会查看并确定应用程序的EXE文件是否包含ID值为菜单项ID的字符串资源。如找到,则加载字符串资源,并把它显示在状态栏窗格中。
创建自定义状态栏窗格
CStatusBar::SetPaneInfo(1, 2, 3, 4)
1,窗格索引
2.窗格ID
3.窗格样式
4.窗格宽
样式:
SBPS_NOBORDERS
SBPS_POPOUT
SBPS_NORMAL
SBPS_DISABLED
SBPS_STRETCH
SBPS_OWNERDRAW
static UINT nIndicators[] = { ID_SEPARATOR, ID_SEPARATOR, ID_SEPARATOR};m_wndStatusBar.Create(this);m_wndStatusBar.SetIndicators(nIndicators, 3);m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_NOBORDERS, 64);...
设置窗格文本:
1.CStatusBar::SetPaneText。
2.给窗格映射一个更新函数,此函数调用CCmdUI::SetText设定文本。
写往状态栏文本前加一个’\t’,可以居中。加两个’\t’,可以右对齐。
组合栏
CReBar
CReBarCtrl
CReBar:
Create
GetReBarCtrl
AddBar
// 1 m_wndToolBar.CreateEx(this); m_wndToolBar.LoadToolBar(IDR_TOOLBAR); m_wndReBar.Create(this); m_wndReBar.AddBar(&m_wndToolBar); // 2 m_bitmap.LoadBitmap(IDB_BKGND); m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT); m_wndToolBar.LoadToolBar(IDR_TOOLBAR); m_wndReBar.Create(this); m_wndReBar.AddBar(&m_wndToolBar, _T("Main"), &m_bitmap);
- MFC Windows程序设计--工具栏,状态栏,组合栏
- MFC菜单、工具栏、状态栏
- MFC框体添加菜单栏工具栏状态栏
- MFC框体添加菜单栏工具栏状态栏
- MFC对话框中的工具栏、状态栏设计小结
- MFC框体添加菜单栏工具栏状态栏
- MFC对话框加载工具栏和状态栏
- MFC对话框添加工具栏、菜单、状态栏
- MFC对话框添加工具栏、菜单、状态栏
- MFC对话框中的工具栏、状态栏设计小结
- MFC工具栏中加入combox组合框
- mfc:工具栏中添加组合框
- C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗口
- MFC取消MDI、SDI的状态栏、工具栏、菜单栏
- MFC 对话框程序如何添加目录,工具栏,状态栏
- MFC 2008,新的用户界面 - 3 - 菜单栏、工具栏和状态栏
- MFC之在对话框创建菜单、工具栏、状态栏
- MFC基于对话框的菜单栏,工具栏和状态栏的创建
- win10 默认程序 edge
- 0416 盒子模型
- Java Socket编程与客户/服务器应用开发(三)
- LeetCode 521. Longest Uncommon Subsequence I
- 初识java
- MFC Windows程序设计--工具栏,状态栏,组合栏
- IDEA的草稿功能,瞬间变为强大的文本编辑器
- Wing IDE安装与破解方法
- HDU
- Could not find helloworld.apk
- 第64天(就业班) springmvc
- PCA的数学原理
- 初识CSS3
- S4HANA OP1511环境说明