CMFCToolBarEditBoxButton 类

包含编辑控件(CEdit 类)的工具栏按钮。

语法

class CMFCToolBarEditBoxButton : public CMFCToolBarButton

成员

公共构造函数

名称 描述
CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton 构造 CMFCToolBarEditBoxButton 对象。
CMFCToolBarEditBoxButton::~CMFCToolBarEditBoxButton 析构函数。

公共方法

名称 描述
CMFCToolBarEditBoxButton::CanBeStretched 指定用户是否可以在自定义期间拉伸按钮。 (替代 CMFCToolBarButton::CanBeStretched。)
CMFCToolBarEditBoxButton::CopyFrom 将另一个工具栏按钮的属性复制到当前按钮。 (替代 CMFCToolBarButton::CopyFrom。)
CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton::CreateEdit 在按钮中创建新的编辑控件。
CMFCToolBarEditBoxButton::CreateObject 由框架用于创建此类类型的动态实例。
CMFCToolBarEditBoxButton::GetByCmd 检索应用程序中具有指定命令 ID 的首个 CMFCToolBarEditBoxButton 对象。
CMFCToolBarEditBoxButton::GetContentsAll 检索具有指定命令 ID 的第一个编辑框工具栏控件的文本。
CMFCToolBarEditBoxButton::GetContextMenuID 检索与按钮关联的快捷菜单的资源 ID。
CMFCToolBarEditBoxButton::GetEditBorder 检索编辑框按钮的编辑部分的边界矩形。
CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton::GetEditBox 返回指向嵌入在按钮中的编辑控件的指针。
CMFCToolBarEditBoxButton::GetHwnd 检索与工具栏按钮关联的窗口句柄。 (替代 CMFCToolBarButton::GetHwnd。)
CMFCToolBarEditBoxButton::GetInvalidateRect 检索必须重新绘制的按钮的工作区的区域。 (替代 CMFCToolBarButton::GetInvalidateRect。)
CMFCToolBarEditBoxButton::GetThisClass 由框架用于获取指向与此类类型关联的 CRuntimeClass 对象的指针。
CMFCToolBarEditBoxButton::HaveHotBorder 确定当用户单击按钮时是否显示按钮的边框。 (替代 CMFCToolBarButton::HaveHotBorder。)
CMFCToolBarEditBoxButton::IsFlatMode 确定编辑框按钮是否具有平面样式。
CMFCToolBarEditBoxButton::NotifyCommand 指定按钮是否处理 WM_COMMAND 消息。 (替代 CMFCToolBarButton::NotifyCommand。)
CMFCToolBarEditBoxButton::OnAddToCustomizePage 当将按钮添加到“自定义”对话框时,由框架调用。 (替代 CMFCToolBarButton::OnAddToCustomizePage。)
CMFCToolBarEditBoxButton::OnCalculateSize 由框架调用,以计算指定设备上下文和停靠状态的按钮大小。 (替代 CMFCToolBarButton::OnCalculateSize。)
CMFCToolBarEditBoxButton::OnChangeParentWnd 当按钮插入新工具栏时由框架调用。 (替代 CMFCToolBarButton::OnChangeParentWnd。)
CMFCToolBarEditBoxButton::OnClick 当用户单击鼠标按钮时由框架调用。 (替代 CMFCToolBarButton::OnClick。)
CMFCToolBarEditBoxButton::OnCtlColor 当父工具栏处理 WM_CTLCOLOR 消息时,由框架调用。 (替代 CMFCToolBarButton::OnCtlColor。)
CMFCToolBarEditBoxButton::OnDraw 由框架调用,用于使用指定的样式和选项绘制按钮。 (替代 CMFCToolBarButton::OnDraw。)
CMFCToolBarEditBoxButton::OnDrawOnCustomizeList 由框架调用,用于在“自定义”对话框的“命令”窗格中绘制按钮。 (替代 CMFCToolBarButton::OnDrawOnCustomizeList。)
CMFCToolBarEditBoxButton::OnGlobalFontsChanged 当更改全局字体时,由框架调用。 (替代 CMFCToolBarButton::OnGlobalFontsChanged。)
CMFCToolBarEditBoxButton::OnMove 当父工具栏移动时,由框架调用。 (替代 CMFCToolBarButton::OnMove。)
CMFCToolBarEditBoxButton::OnShow 当按钮变为可见或不可见时,由框架调用。 (替代 CMFCToolBarButton::OnShow。)
CMFCToolBarEditBoxButton::OnSize 当父工具栏更改其大小或位置并且此更改导致按钮大小发生更改时,由框架调用。 (替代 CMFCToolBarButton::OnSize。)
CMFCToolBarEditBoxButton::OnUpdateToolTip 当父工具栏更新其工具提示文本时,由框架调用。 (替代 CMFCToolBarButton::OnUpdateToolTip。)
CMFCToolBarEditBoxButton::Serialize 从存档中读取此对象或将其写入存档。 (替代 CMFCToolBarButton::Serialize。)
CMFCToolBarEditBoxButton::SetACCData 使用工具栏按钮中的辅助功能数据填充所提供的 CAccessibilityData 对象。 (替代 CMFCToolBarButton::SetACCData。)
CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton::SetContents 设置按钮的编辑控件中的文本。
CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton::SetContentsAll 查找具有指定命令 ID 的编辑控件按钮,并在该按钮的编辑控件中设置文本。
CMFCToolBarEditBoxButton::SetContextMenuID 指定与按钮关联的快捷菜单的资源 ID。
CMFCToolBarEditBoxButton::SetFlatMode 指定应用程序中编辑框按钮的平面样式外观。
CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton::SetStyle 指定按钮的样式。 (替代 CMFCToolBarButton::SetStyle。)

备注

若要将编辑框按钮添加到工具栏,请执行以下步骤:

  1. 在父级工具栏资源中保留该按钮的虚拟资源 ID。

  2. 构造一个 CMFCToolBarEditBoxButton 对象。

  3. 在处理 AFX_WM_RESETTOOLBAR 消息的消息处理程序中,使用 CMFCToolBar::ReplaceButton 将虚拟按钮替换为新的组合框按钮。

有关详细信息,请参阅演练:将控件放在工具栏上

示例

下面的示例演示了如何使用 CMFCToolBarEditBoxButton 类中的各种方法。 该示例演示如何指定用户可在自定义期间拉伸按钮,指定当用户单击按钮时显示按钮的边框,设置文本框控件中的文本,指定应用程序中编辑框按钮的平面样式外观,以及指定工具栏编辑框控件的样式。

CMFCToolBarEditBoxButton *boxButton = new CMFCToolBarEditBoxButton();
boxButton->CanBeStretched();
boxButton->HaveHotBorder();
boxButton->SetContents(_T("edit box button"));
boxButton->SetFlatMode(true);
boxButton->SetStyle(TBBS_PRESSED);

继承层次结构

CObject

CMFCToolBarButton

CMFCToolBarEditBoxButton

要求

标头:afxtoolbareditboxbutton.h

CMFCToolBarEditBoxButton::CanBeStretched

指定用户是否可以在自定义期间拉伸按钮。

virtual BOOL CanBeStretched() const;

返回值

该方法返回 TRUE。

备注

默认情况下,框架不支持用户在自定义期间拉伸工具栏按钮。 此方法通过支持用户在自定义期间拉伸编辑框工具栏按钮来扩展基类实现 (CMFCToolBarButton::CanBeStretched)。

CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton

构造一个 CMFCToolBarEditBoxButton 对象。

CMFCToolBarEditBoxButton(
    UINT uiID,
    int iImage,
    DWORD dwStyle=ES_AUTOHSCROLL,
    int iWidth=0);

参数

uiID
[in] 指定控件 ID。

iImage
[in] 指定工具栏图像的从零开始的索引。 该图像位于 CMFCToolBarImages 类对象中,该对象由 CMFCToolBar 类进行维护。

dwStyle
[in] 指定编辑控件样式。

iWidth
[in] 指定编辑控件的宽度(以像素为单位)。

备注

默认构造函数将编辑控件样式设置为以下组合:

WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL

控件的默认宽度为 150 像素。

CMFCToolBarEditBoxButton::CopyFrom

将另一个工具栏按钮的属性复制到当前按钮。

virtual void CopyFrom(const CMFCToolBarButton& src);

参数

src
[in] 对要从中复制的源按钮的引用。

注解

调用此方法,将另一个工具栏按钮复制到此工具栏按钮。 “src”的类型必须为 CMFCToolBarEditBoxButton

CMFCToolBarEditBoxButton::CreateEdit

在按钮中创建新的编辑控件。

virtual CEdit* CreateEdit(
    CWnd* pWndParent,
    const CRect& rect);

参数

pWndParent
[in] 指定编辑控件的父窗口。 不得为 NULL。

rect
[in] 指定编辑控件的大小和位置。

返回值

指向新创建的编辑控件的指针;如果控件的创建和附加操作失败,则为 NULL。

备注

请分两步构造 CMFCToolBarEditBoxButton 对象。 首先调用构造函数,然后调用 CreateEdit,这会创建 Windows 编辑控件并将其附加到 CMFCToolBarEditBoxButton 对象。

CMFCToolBarEditBoxButton::GetByCmd

检索应用程序中具有指定命令 ID 的首个 CMFCToolBarEditBoxButton 对象。

static CMFCToolBarEditBoxButton* __stdcall GetByCmd(UINT uiCmd);

参数

uiCmd
[in] 要检索的按钮的命令 ID。

返回值

应用程序中具有指定命令 ID 的第一个 CMFCToolBarEditBoxButton 对象;如果没有此类对象,则为 NULL。

注解

此共享实用工具方法由 CMFCToolBarEditBoxButton::SetContentsAllCMFCToolBarEditBoxButton::GetContentsAll 等方法用来设置或获取具有指定命令 ID 的第一个编辑框工具栏控件的文本。

CMFCToolBarEditBoxButton::GetContentsAll

检索具有指定命令 ID 的第一个编辑框工具栏控件的文本。

static CString __stdcall GetContentsAll(UINT uiCmd);

参数

uiCmd
[in] 要从中检索内容的按钮的命令 ID。

返回值

一个 CString 对象,它包含具有指定命令 ID 的第一个编辑框工具栏控件的文本。

备注

如果 CMFCToolBarEditBoxButton 对象均没有指定命令 ID,则此方法返回空字符串。

CMFCToolBarEditBoxButton::GetContextMenuID

检索与按钮关联的快捷菜单的资源 ID。

UINT GetContextMenuID();

返回值

返回与按钮关联的快捷菜单的资源 ID;如果按钮没有关联快捷菜单,则返回 0。

备注

当用户右键单击按钮时,框架使用资源 ID 创建快捷菜单。

CMFCToolBarEditBoxButton::GetEditBorder

检索编辑框按钮的编辑部分的边界矩形。

virtual void GetEditBorder(CRect& rectBorder);

参数

rectBorder
[out] 对接收边界矩形的 CRect 对象的引用。

备注

此方法在客户端坐标中检索编辑控件的边界矩形。 它在每个方向按 1 个像素扩大矩形的大小。

CMFCVisualManager::OnDrawEditBorder 方法在 CMFCToolBarEditBoxButton 对象四周绘制边框时调用此方法。

CMFCToolBarEditBoxButton::GetEditBox

返回指向嵌入在按钮中的 CEdit 类控件的指针。

CEdit* GetEditBox() const;

返回值

指向按钮包含的 CEdit 类控件的指针。 如果尚未创建 CEdit 控件,则为 NULL。

注解

通过调用 CMFCToolBarEditBoxButton::CreateEdit 来创建 CEdit 控件。

CMFCToolBarEditBoxButton::GetHwnd

检索与工具栏按钮关联的窗口句柄。

virtual HWND GetHwnd();

返回值

与按钮关联的窗口句柄。

备注

此方法通过返回编辑框按钮的编辑控件部分的窗口句柄来替代 CMFCToolBarButton::GetHwnd 方法。

CMFCToolBarEditBoxButton::GetInvalidateRect

检索必须重新绘制的按钮的工作区的区域。

virtual const CRect GetInvalidateRect() const;

返回值

一个 CRect 对象,它指定必须重新绘制的区域。

备注

此方法通过在区域中包含文本标签区域来扩展基类实现 CMFCToolBarButton::GetInvalidateRect

CMFCToolBarEditBoxButton::HaveHotBorder

确定当用户单击按钮时是否显示按钮的边框。

virtual BOOL HaveHotBorder() const;

返回值

如果按钮在选中时显示其边框,返回值为非零;否则为 0。

注解

如果控件可见,此方法通过返回非零值来扩展基类实现 CMFCToolBarButton::HaveHotBorder

CMFCToolBarEditBoxButton::IsFlatMode

确定编辑框按钮是否具有平面样式。

static BOOL __stdcall IsFlatMode();

返回值

如果按钮具有平面样式,则返回非零值;否则返回 0。

注解

默认情况下,编辑框按钮具有平面样式。 使用 CMFCToolBarEditBoxButton::SetFlatMode 方法更改应用程序的平面样式外观。

CMFCToolBarEditBoxButton::NotifyCommand

指定按钮是否处理 WM_COMMAND 消息。

virtual BOOL NotifyCommand(int iNotifyCode);

参数

iNotifyCode
[in] 与命令关联的通知消息。

返回值

如果按钮处理 WM_COMMAND 消息,则返回 TRUE;返回 FALSE 指示消息必须由父级工具栏处理。

备注

当即将向父窗口发送 WM_COMMAND 消息时,框架会调用此方法。

此方法通过处理 EN_UPDATE 通知来扩展基类实现 (CMFCToolBarButton::NotifyCommand)。 对于具有与此对象相同的命令 ID 的每个编辑框,它将其文本标签设置为此对象的文本标签。

CMFCToolBarEditBoxButton::OnAddToCustomizePage

当将按钮添加到“自定义”对话框时,由框架调用

virtual void OnAddToCustomizePage();

备注

此方法扩展了基类实现 (CMFCToolBarButton::OnAddToCustomizePage),方法是从与此对象具有相同命令 ID 的任何工具栏中的编辑框控件复制属性。 如果没有工具栏具有命令 ID 与此对象相同的编辑框控件,此方法不执行任何操作。

有关自定义对话框的详细信息,请参阅 CMFCToolBarsCustomizeDialog 类

CMFCToolBarEditBoxButton::OnChangeParentWnd

当按钮插入新工具栏时由框架调用。

virtual void OnChangeParentWnd(CWnd* pWndParent);

参数

pWndParent
[in] 指向新的父窗口的指针。

备注

此方法通过重新创建内部 CEdit 对象来替代基类实现 (CMFCToolBarButton::OnChangeParentWnd)。

CMFCToolBarEditBoxButton::OnClick

当用户单击鼠标按钮时由框架调用。

virtual BOOL OnClick(
    CWnd* pWnd,
    BOOL bDelay = TRUE);

参数

pWnd
[in] 未使用。

bDelay
[in] 未使用。

返回值

如果按钮处理单击消息,返回值为非零;否则返回值为 0。

注解

如果内部 CEdit 对象可见,此方法通过返回非零值来替代基类实现 (CMFCToolBarButton::OnClick)。

CMFCToolBarEditBoxButton::OnCtlColor

当父工具栏处理 WM_CTLCOLOR 消息时,由框架调用。

virtual HBRUSH OnCtlColor(
    CDC* pDC,
    UINT nCtlColor);

参数

pDC
[in] 显示按钮的设备上下文。

nCtlColor
[in] 未使用。

返回值

全局窗口画笔的句柄。

备注

此方法替代基类实现 (CMFCToolBarButton::OnCtlColor),方法是将提供的设备上下文的文本和背景色分别设置为全局文本和背景色。

若要详细了解可供应用程序使用的全局选项,请参阅 AFX_GLOBAL_DATA 结构

CMFCToolBarEditBoxButton::OnGlobalFontsChanged

当更改全局字体时,由框架调用。

virtual void OnGlobalFontsChanged();

注解

此方法通过将控件的字体更改为全局字体来扩展基类实现 (CMFCToolBarButton::OnGlobalFontsChanged)。

若要详细了解可供应用程序使用的全局选项,请参阅 AFX_GLOBAL_DATA 结构

CMFCToolBarEditBoxButton::OnMove

当父工具栏移动时,由框架调用。

virtual void OnMove();

备注

此方法通过更新内部 CEdit 对象的位置来替代默认类实现 (CMFCToolBarButton::OnMove)

CMFCToolBarEditBoxButton::OnShow

当按钮变为可见或不可见时,由框架调用。

virtual void OnShow(BOOL bShow);

参数

bShow
[in] 指定按钮是否可见。 如果此参数为 TRUE,则按钮可见。 否则,按钮不可见。

备注

如果 bShow 为 TRUE,此方法通过显示按钮来扩展基类实现 (CMFCToolBarButton::OnShow)。 否则,此方法将隐藏按钮。

CMFCToolBarEditBoxButton::OnSize

当父工具栏更改其大小或位置并且此更改导致按钮大小发生更改时,由框架调用。

virtual void OnSize(int iSize);

参数

iSize
[in] 按钮的新宽度(以像素为单位)。

备注

此方法通过更新内部 CEdit 对象的大小和位置来替代默认类实现 (CMFCToolBarButton::OnSize)。

CMFCToolBarEditBoxButton::OnUpdateToolTip

当父工具栏更新其工具提示文本时,由框架调用。

virtual BOOL OnUpdateToolTip(
    CWnd* pWndParent,
    int iButtonIndex,
    CToolTipCtrl& wndToolTip,
    CString& str);

参数

pWndParent
[in] 未使用。

iButtonIndex
[in] 未使用。

wndToolTip
[in] 显示工具提示文本的控件。

str
[out] 接收更新的工具提示文本的 CString 对象。

返回值

如果方法更新工具提示文本,返回值为非零;否则返回值为 0。

备注

此方法通过显示与按钮编辑部分关联的工具提示文本来扩展基类实现 (CMFCToolBarButton::OnUpdateToolTip)。 如果内部 CEdit 对象为 NULL,或者 CEdit 对象的窗口句柄未标识现有窗口,则此方法不执行任何操作并返回 FALSE。

CMFCToolBarEditBoxButton::SetContents

设置文本框控件中的文本。

virtual void SetContents(const CString& sContents);

参数

sContents
[in] 指定要设置的新文本。

CMFCToolBarEditBoxButton::SetContentsAll

查找具有指定命令 ID 的 CMFCToolBarEditBoxButton 对象,并在其文本框中设置指定的文本。

static BOOL SetContentsAll(
    UINT uiCmd,
    const CString& strContents);

参数

uiCmd
[in] 指定要更改其文本的控件的命令 ID。

strContents
[in] 指定要设置的新文本。

返回值

如果设置了文本,则返回非零值;如果具有指定命令 ID 的 CMFCToolBarEditBoxButton 控件不存在,则返回 0。

CMFCToolBarEditBoxButton::SetContextMenuID

指定与按钮关联的快捷菜单的资源 ID。

void SetContextMenuID(UINT uiResID);

参数

uiCmd
[in] 快捷菜单的资源 ID。

备注

当用户右键单击工具栏按钮时,框架使用资源 ID 创建快捷菜单。

CMFCToolBarEditBoxButton::SetFlatMode

指定应用程序中编辑框按钮的平面样式外观。

static void __stdcall SetFlatMode(BOOL bFlat = TRUE);

参数

bFlat
[in] 编辑框按钮的平面样式。 如果此参数为 TRUE,则启用平面样式外观,否则,禁用平面样式外观。

备注

编辑框按钮的默认平面样式为 TRUE。 使用 CMFCToolBarEditBoxButton::IsFlatMode 方法检索应用程序的平面样式外观。

CMFCToolBarEditBoxButton::SetStyle

指定工具栏编辑框控件的样式。

virtual void SetStyle(UINT nStyle);

参数

nStyle
[in] 要设置的新样式。

备注

此方法将 CMFCToolBarButton::m_nStyle 设置为 nStyle。当应用程序处于自定义模式时,也会禁用文本框;当应用程序不在自定义模式下时,则启用它(请参阅 CMFCToolBar::SetCustomizeModeCMFCToolBar::IsCustomizeMode)。 有关有效样式标志的列表,请参阅工具栏控件样式

另请参阅

层次结构图

CMFCToolBarButton 类
CEdit 类
CMFCToolBar::ReplaceButton
演练:将控件置于工具栏上