VC++工具栏与状态栏
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
• 例子
10
1、4类CToolBar 类CToolBar提供了带有位图按钮和可选分
隔符的工具栏,工具栏按钮有下压式、复 选框按钮或单选按钮。 CToolBar对象通常被 嵌入派生类CFrameWnd或CMDIFrameWnd的 框架窗口对象的成员。利用AppWizard创建 应用程序框架时,通常为框架类创建一个 CToolBar对象。
8
(2)船坞化工具栏
要使工具栏为船坞化的,需要使用类似以下的 代码: m_wndToolBar.EnableDocking(CBRS_
ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar);
首先要使工具栏能够船坞化,要通过调用 CControlBar::EnableDocking来实现; 然后应该确保边框窗口能够船坞化,这是通过调 用CFrameWnd::EnableDocking来实现; 最后调用CControlBar::DockControlBar使工具栏固 定在边框窗口上。
界,文字突出 20
⑤SBPS_STRETCH 扩展指示器以填上不用的空 间,在每一个状态栏中只有 一个指示器可以使用这种风格
3、SetPaneText()函数 函数SetPaneText()用于设置给定索引值的指示器
的文本。它的原型为: BOOL SetPaneText(int nIndex,LPCTSTR
5
所有工具栏按钮图像都保存在一个位图文件中, 在AppWizard创建工程过程中,自动创建的工具栏 位图文件名为Res\ToolBar.bmp,可以在资源编辑 器中编辑该位图。每个图像都有相同的大小,默 认为16像素宽,15像素高。
CToolBar对象根据被单击按钮在工具栏中的位置来 处理工具栏中的鼠标单击事件,并产生适当的命 令。按钮通过控件ID数组与按钮所产生的命令相 关,控件ID在数组中的位置与按钮图像在工具栏 位图中的位置是一样的。数组中含有分隔符 (ID_SEPARATOR),用于将按钮分组。在确定按 钮位置时,分隔符是被忽略的。
static UINT indicators[]=
{ ID_SEPARATOR,
//状态行指示器
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
} 16
提示符从左到右水平排列在状态栏中,往数组中 添加更多的标识符就可以在状态栏增加更多的提 示符,可以根据需要动态改变提示符的大小,通 过增加ID_SEPARATOR元素还可增加分隔符。最左 边的提示符(位置0)通常用作消息区,可以在其中 显示命令提示之类的文本字符串。
15
பைடு நூலகம்
状态栏中的子窗口可以分为状态信息行和状态指
示器。状态信息行显示应用程序动态提供的字符 串,常见的为菜单命令的说明。状态指示器显示 一些状态信息,如键盘状态,其标识符存放在一 个数组中。例如,当创建应用程序的基本框架时, AppWizard会在主边框窗口类(CMainFram)中创建 类似下面的提示符数组:
BOOL Create(CWnd*pParentWnd, DWORD dwStyle=WS_CHILD|WS_VISIBLE| CBRS_BOTTOM,UINT nID = AFX_IDW_STATUS_BAR); 其中参数pParentWnd为指向父窗口CWnd对象的
指针;dwStyle指定状态栏的风格,除了标准的 Windows风格外,还可以是CBRS_TOP(状态栏
6
工具栏按钮可以以按钮、复选框或单选框的形 式出现和起作用,默认情况下以按钮形式出现。 若想让工具栏按钮以复选框形式出现时,应将风 格TBBS_ CHECKBOX赋给该CToolBar对象或在一个 ON_UNDATE_COMMAND_UI处理程序中使用某个 CCmdUI对象的SetCheck函数;如果按钮为单选框 形式,那么应在命令更新处理函数中调用 CCmdUI::SetRadio。
工具栏和状态栏一般作为框架窗口类的成员变量声明,在 创建框架窗口时自动创建它们,在销毁框架窗口时自动销 毁所创建的控件栏对象。
使用AppWizard创建应用程序基本框架时,可以得到初始 的工具栏和状态栏。
2
1、2工具栏的创建
工具栏创建有两种方法,第一种是使用工具栏编辑器。基 本步骤为: (1)创建工具栏资源 (2)构造CToolBar对象,即在边框窗口类的声明中添加类似 以下的声明:CToolBar m_wndToolBar。 (3)调用Create或CreateEx创建工具栏,然后调用 LoadToolBar装载工具栏资源,即在边框窗口类的OnCreate 添加类似下面的代码:
函数SetIndIcators()用于设置指示器的ID,并装入 由每个ID指定的字符串资源,然后将指示器的文 字设置为该字符串,该函数的原型为:
BOOL SetIndIcators(const UINT*lpIDArray, int nIDCount); 参数lpIDArray为指向ID数组的指针, nIDCount为
11
(1)Create()函数 Create()函数用于创建一个Windows工具栏,并将
其连接到CToolBar对象上,同时设置工具条的默认 高度。该函数的原型如下:
BOOL Create(CWnd*pParentWnd, DWORD dwStyle = WS_CHILD|WS_VISIBLE|CBRS_TOP, UINT Nid=AFX_IDW_TOOLBAR);
2、1状态栏简介
状态栏是显示在框架窗口的多区域窗口,它由一 行输出面板或指示器组成。输出面板通常用作消 息行和状态指示符。大多数Windows应用程序都 包括一个状态栏,在状态栏中显示诸如工具栏按 钮帮助和应用程序的特殊信息(如在字处理软件中 的CapsLock键的状态)。
AppWizard创建应用程序时,一般自动添加状态 栏,程序员在编程的过程中只需在原有的状态栏 的基础上适当修改即可。
2、2创建状态栏
创建状态栏的步骤: (1)构造CStatusBar对象。 (2)调用Create创建状态栏并将其与CStatusBar对象 联结。 (3)调用成员函数SetIndicators,设置指示符的标识 符为数组中相应元素指定的值,装载每个标识符 指定的字符串资源并将字符串设为提示符文本。
17
lpszNewText,BOOL bUpdate=TRUE); 该函数用lpszNewText所指向的字符串来设置状态 栏的文字。
21
2、4状态指示器的操作实例
状态指示器总是与一个字符串相连的,该字符串 是由资源来提供的,它是否被显示安全取决于相 应的更新命令UI消息控制函数。指示器是由一个 字符串资源ID来标识的,该ID也被用来传递更新 命令UI消息。
lpIDArray所指向的数组元素的个数。该函数按照 数组lpIDArray中的对应元素的值设定标识符ID
19
的值,加载由每个ID所指定的字符串资源,并把字 符串设置为标识符的文字。如果该函数操作成功, 在返回一个非0值,否则返回0。 2、SetPaneInfo()函数
函数SetPaneInfo()用于设置给定索引值的指示器 ID、风格和宽度。它的原型为:
⑧CBRS_FLYBY 在状态栏中显示按钮的有关信息。
⑨CBRS_HIDE_INPLANE 不显示工具栏。
4
如果创建后要改变工具栏的风格,则调用 CControlBar::SetBarStyle来实现。 工具栏创建的另一方法为: (1)构造CToolBar对象 (2)调用Create或CreateEx创建工具栏。 (3)调用LoadBitmap装载包含工具按钮图像的位图。 (4)调用SetButton设置按钮并使每个按钮与位图图 像相关。
if(!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR _MAINFRAME))
{ TRACEO(“Faild to create toolbar\n”); Return -1;
}
3
(4)调用Create时还可以指定工具栏的风格,默认 风格是WS_CHILD|WS_VISIBLE|CBRS_TOP。
其中参数pParentWnd为指向父窗口CWnd对象的 指针;dwStyle指定工具栏的风格,除了标准的 Windows风格外,还可以是CBRS_BOTTOM(工具栏 位于框架窗口的底部)、CBRS_NOALIGN(当父窗口改 变时,工具栏不被重新定位);参数nID表示该工具 栏的子窗口ID。
12
(2)LoadToolBar()函数 该函数装载指定的工具栏资源,它的原型 为:
void SetPaneInfo(int nIndex,UINT nID,
UINT nStyle, int cxWidth); 该函数给标识符栏设置一个新的ID、风格和宽度。 可供选择的标识符风格有:
①SBPS_NOBORDERS 指示器周围无3-D边界 ②SBPS_POPOUT 反转边界,以使文字突出 ③SBPS_DISABLED 不写文字 ④SBPS_NORMAL 一般方式,不扩展,有边
工具栏与状态栏
1
1、工具栏
1、1工具栏简介
工具栏对象是一种窗口,其中包含一些水平排放的图形按 钮。工具栏中的所有按钮的图形被存储在一个位图中,而 该位图被定义在应用程序的资源文件中。
工具栏按钮与菜单选项是类似的。单击工具栏按钮将产生 相应的命令,应用程序通过提供消息处理函数来处理产生 的命令。如果工具栏的某个按钮没有COMMAND或 UPDATE_COMMAND_UI处理函数,那么框架自动使该按钮 无效。
BOOL LoadToolBar(LPCTSTR lpszResourceName);
BOOL LoadToolBar(UINT nIDResource); 参数lpszResourceName指向被重载的工具栏 资源名字的指针,参数nIDResource为被重 载的工具栏资源的ID。
13
14
2 状态栏
18
位于框架窗口的顶部)、CBRS_BOTTOM(状态栏位于 框架窗口的底部)、CBRS_NOALIGN(当父窗口改变 时,状态栏不被重新定位);参数nID表示该状态 栏的子窗口ID。如果函数调用成功,则返回一个 非0值,否则返回0。CStatusBar类还提供一系列成 员函数来管理状态栏的指示器,主要有: 1、SetIndIcators()函数
7
1、3特殊形式的工具栏
(1)浮动式工具栏 通过AppWizard创建的工具栏可以浮动。若要将
工具栏移动到某个位置,可以调用框架窗口类的 成员函数FloatControlBar来实现,该函数的原型如 下: CFrameWnd*FloatControlBar(CControlBar*pBar,
CPoint point, DWORD dwstyle=CBRS_ALIGN_TOP ); 第一个参数是指向工具栏的指针,第二个参数说明 工具栏在哪儿浮动,第三个参数指定工具栏与边 框窗口的对齐方式。以下代码使工具栏在左上角 浮动。 FloatControlBar(&m_wndToolBar,CPoint(0,0));
2、3状态栏类CStatusBar
MFC的CStatusBar类用来实现状态栏的功能。 CStatusBar类CControlBar类的派生类,它定义了一 个默认的构造函数和一个Create()成员函数。 CStatusBar::Create()函数用于创建一个Windows 状态栏(子窗口),并将其连接到CStatusBar对象上, 同时设置初始字体和状态栏的高度,该函数原型 为:
①CBRS_TOP
工具栏在边框窗口顶部
②CBRS_BOTTOM 工具栏在边框窗口底部
③CBRS_NOALIGN 边框窗口改变大小时,工具栏不 重定位
④CBRS_TOOLTIPS 使工具提示有效。
⑤CBRS_SIZE_DYNAMIC 工具栏尺寸可变。
⑥CBRS_SIZE_FIXED 工具栏尺寸固定。
⑦CBRS_FLOATLNG 工具栏是浮动的。
• 例子
10
1、4类CToolBar 类CToolBar提供了带有位图按钮和可选分
隔符的工具栏,工具栏按钮有下压式、复 选框按钮或单选按钮。 CToolBar对象通常被 嵌入派生类CFrameWnd或CMDIFrameWnd的 框架窗口对象的成员。利用AppWizard创建 应用程序框架时,通常为框架类创建一个 CToolBar对象。
8
(2)船坞化工具栏
要使工具栏为船坞化的,需要使用类似以下的 代码: m_wndToolBar.EnableDocking(CBRS_
ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar);
首先要使工具栏能够船坞化,要通过调用 CControlBar::EnableDocking来实现; 然后应该确保边框窗口能够船坞化,这是通过调 用CFrameWnd::EnableDocking来实现; 最后调用CControlBar::DockControlBar使工具栏固 定在边框窗口上。
界,文字突出 20
⑤SBPS_STRETCH 扩展指示器以填上不用的空 间,在每一个状态栏中只有 一个指示器可以使用这种风格
3、SetPaneText()函数 函数SetPaneText()用于设置给定索引值的指示器
的文本。它的原型为: BOOL SetPaneText(int nIndex,LPCTSTR
5
所有工具栏按钮图像都保存在一个位图文件中, 在AppWizard创建工程过程中,自动创建的工具栏 位图文件名为Res\ToolBar.bmp,可以在资源编辑 器中编辑该位图。每个图像都有相同的大小,默 认为16像素宽,15像素高。
CToolBar对象根据被单击按钮在工具栏中的位置来 处理工具栏中的鼠标单击事件,并产生适当的命 令。按钮通过控件ID数组与按钮所产生的命令相 关,控件ID在数组中的位置与按钮图像在工具栏 位图中的位置是一样的。数组中含有分隔符 (ID_SEPARATOR),用于将按钮分组。在确定按 钮位置时,分隔符是被忽略的。
static UINT indicators[]=
{ ID_SEPARATOR,
//状态行指示器
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
} 16
提示符从左到右水平排列在状态栏中,往数组中 添加更多的标识符就可以在状态栏增加更多的提 示符,可以根据需要动态改变提示符的大小,通 过增加ID_SEPARATOR元素还可增加分隔符。最左 边的提示符(位置0)通常用作消息区,可以在其中 显示命令提示之类的文本字符串。
15
பைடு நூலகம்
状态栏中的子窗口可以分为状态信息行和状态指
示器。状态信息行显示应用程序动态提供的字符 串,常见的为菜单命令的说明。状态指示器显示 一些状态信息,如键盘状态,其标识符存放在一 个数组中。例如,当创建应用程序的基本框架时, AppWizard会在主边框窗口类(CMainFram)中创建 类似下面的提示符数组:
BOOL Create(CWnd*pParentWnd, DWORD dwStyle=WS_CHILD|WS_VISIBLE| CBRS_BOTTOM,UINT nID = AFX_IDW_STATUS_BAR); 其中参数pParentWnd为指向父窗口CWnd对象的
指针;dwStyle指定状态栏的风格,除了标准的 Windows风格外,还可以是CBRS_TOP(状态栏
6
工具栏按钮可以以按钮、复选框或单选框的形 式出现和起作用,默认情况下以按钮形式出现。 若想让工具栏按钮以复选框形式出现时,应将风 格TBBS_ CHECKBOX赋给该CToolBar对象或在一个 ON_UNDATE_COMMAND_UI处理程序中使用某个 CCmdUI对象的SetCheck函数;如果按钮为单选框 形式,那么应在命令更新处理函数中调用 CCmdUI::SetRadio。
工具栏和状态栏一般作为框架窗口类的成员变量声明,在 创建框架窗口时自动创建它们,在销毁框架窗口时自动销 毁所创建的控件栏对象。
使用AppWizard创建应用程序基本框架时,可以得到初始 的工具栏和状态栏。
2
1、2工具栏的创建
工具栏创建有两种方法,第一种是使用工具栏编辑器。基 本步骤为: (1)创建工具栏资源 (2)构造CToolBar对象,即在边框窗口类的声明中添加类似 以下的声明:CToolBar m_wndToolBar。 (3)调用Create或CreateEx创建工具栏,然后调用 LoadToolBar装载工具栏资源,即在边框窗口类的OnCreate 添加类似下面的代码:
函数SetIndIcators()用于设置指示器的ID,并装入 由每个ID指定的字符串资源,然后将指示器的文 字设置为该字符串,该函数的原型为:
BOOL SetIndIcators(const UINT*lpIDArray, int nIDCount); 参数lpIDArray为指向ID数组的指针, nIDCount为
11
(1)Create()函数 Create()函数用于创建一个Windows工具栏,并将
其连接到CToolBar对象上,同时设置工具条的默认 高度。该函数的原型如下:
BOOL Create(CWnd*pParentWnd, DWORD dwStyle = WS_CHILD|WS_VISIBLE|CBRS_TOP, UINT Nid=AFX_IDW_TOOLBAR);
2、1状态栏简介
状态栏是显示在框架窗口的多区域窗口,它由一 行输出面板或指示器组成。输出面板通常用作消 息行和状态指示符。大多数Windows应用程序都 包括一个状态栏,在状态栏中显示诸如工具栏按 钮帮助和应用程序的特殊信息(如在字处理软件中 的CapsLock键的状态)。
AppWizard创建应用程序时,一般自动添加状态 栏,程序员在编程的过程中只需在原有的状态栏 的基础上适当修改即可。
2、2创建状态栏
创建状态栏的步骤: (1)构造CStatusBar对象。 (2)调用Create创建状态栏并将其与CStatusBar对象 联结。 (3)调用成员函数SetIndicators,设置指示符的标识 符为数组中相应元素指定的值,装载每个标识符 指定的字符串资源并将字符串设为提示符文本。
17
lpszNewText,BOOL bUpdate=TRUE); 该函数用lpszNewText所指向的字符串来设置状态 栏的文字。
21
2、4状态指示器的操作实例
状态指示器总是与一个字符串相连的,该字符串 是由资源来提供的,它是否被显示安全取决于相 应的更新命令UI消息控制函数。指示器是由一个 字符串资源ID来标识的,该ID也被用来传递更新 命令UI消息。
lpIDArray所指向的数组元素的个数。该函数按照 数组lpIDArray中的对应元素的值设定标识符ID
19
的值,加载由每个ID所指定的字符串资源,并把字 符串设置为标识符的文字。如果该函数操作成功, 在返回一个非0值,否则返回0。 2、SetPaneInfo()函数
函数SetPaneInfo()用于设置给定索引值的指示器 ID、风格和宽度。它的原型为:
⑧CBRS_FLYBY 在状态栏中显示按钮的有关信息。
⑨CBRS_HIDE_INPLANE 不显示工具栏。
4
如果创建后要改变工具栏的风格,则调用 CControlBar::SetBarStyle来实现。 工具栏创建的另一方法为: (1)构造CToolBar对象 (2)调用Create或CreateEx创建工具栏。 (3)调用LoadBitmap装载包含工具按钮图像的位图。 (4)调用SetButton设置按钮并使每个按钮与位图图 像相关。
if(!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR _MAINFRAME))
{ TRACEO(“Faild to create toolbar\n”); Return -1;
}
3
(4)调用Create时还可以指定工具栏的风格,默认 风格是WS_CHILD|WS_VISIBLE|CBRS_TOP。
其中参数pParentWnd为指向父窗口CWnd对象的 指针;dwStyle指定工具栏的风格,除了标准的 Windows风格外,还可以是CBRS_BOTTOM(工具栏 位于框架窗口的底部)、CBRS_NOALIGN(当父窗口改 变时,工具栏不被重新定位);参数nID表示该工具 栏的子窗口ID。
12
(2)LoadToolBar()函数 该函数装载指定的工具栏资源,它的原型 为:
void SetPaneInfo(int nIndex,UINT nID,
UINT nStyle, int cxWidth); 该函数给标识符栏设置一个新的ID、风格和宽度。 可供选择的标识符风格有:
①SBPS_NOBORDERS 指示器周围无3-D边界 ②SBPS_POPOUT 反转边界,以使文字突出 ③SBPS_DISABLED 不写文字 ④SBPS_NORMAL 一般方式,不扩展,有边
工具栏与状态栏
1
1、工具栏
1、1工具栏简介
工具栏对象是一种窗口,其中包含一些水平排放的图形按 钮。工具栏中的所有按钮的图形被存储在一个位图中,而 该位图被定义在应用程序的资源文件中。
工具栏按钮与菜单选项是类似的。单击工具栏按钮将产生 相应的命令,应用程序通过提供消息处理函数来处理产生 的命令。如果工具栏的某个按钮没有COMMAND或 UPDATE_COMMAND_UI处理函数,那么框架自动使该按钮 无效。
BOOL LoadToolBar(LPCTSTR lpszResourceName);
BOOL LoadToolBar(UINT nIDResource); 参数lpszResourceName指向被重载的工具栏 资源名字的指针,参数nIDResource为被重 载的工具栏资源的ID。
13
14
2 状态栏
18
位于框架窗口的顶部)、CBRS_BOTTOM(状态栏位于 框架窗口的底部)、CBRS_NOALIGN(当父窗口改变 时,状态栏不被重新定位);参数nID表示该状态 栏的子窗口ID。如果函数调用成功,则返回一个 非0值,否则返回0。CStatusBar类还提供一系列成 员函数来管理状态栏的指示器,主要有: 1、SetIndIcators()函数
7
1、3特殊形式的工具栏
(1)浮动式工具栏 通过AppWizard创建的工具栏可以浮动。若要将
工具栏移动到某个位置,可以调用框架窗口类的 成员函数FloatControlBar来实现,该函数的原型如 下: CFrameWnd*FloatControlBar(CControlBar*pBar,
CPoint point, DWORD dwstyle=CBRS_ALIGN_TOP ); 第一个参数是指向工具栏的指针,第二个参数说明 工具栏在哪儿浮动,第三个参数指定工具栏与边 框窗口的对齐方式。以下代码使工具栏在左上角 浮动。 FloatControlBar(&m_wndToolBar,CPoint(0,0));
2、3状态栏类CStatusBar
MFC的CStatusBar类用来实现状态栏的功能。 CStatusBar类CControlBar类的派生类,它定义了一 个默认的构造函数和一个Create()成员函数。 CStatusBar::Create()函数用于创建一个Windows 状态栏(子窗口),并将其连接到CStatusBar对象上, 同时设置初始字体和状态栏的高度,该函数原型 为:
①CBRS_TOP
工具栏在边框窗口顶部
②CBRS_BOTTOM 工具栏在边框窗口底部
③CBRS_NOALIGN 边框窗口改变大小时,工具栏不 重定位
④CBRS_TOOLTIPS 使工具提示有效。
⑤CBRS_SIZE_DYNAMIC 工具栏尺寸可变。
⑥CBRS_SIZE_FIXED 工具栏尺寸固定。
⑦CBRS_FLOATLNG 工具栏是浮动的。