CMFCEditBrowseCtrl 类
CMFCEditBrowseCtrl
类支持编辑浏览控件,此控件是可选择包含浏览按钮的可编辑文本框。 当用户单击浏览按钮时,此控件会执行自定义操作或显示包含文件浏览器或文件夹浏览器的标准对话框。
语法
class CMFCEditBrowseCtrl : public CEdit
成员
公共构造函数
名称 | 描述 |
---|---|
CMFCEditBrowseCtrl::CMFCEditBrowseCtrl |
默认构造函数。 |
CMFCEditBrowseCtrl::~CMFCEditBrowseCtrl |
析构函数。 |
公共方法
名称 | 描述 |
---|---|
CMFCEditBrowseCtrl::EnableBrowseButton | 启用或禁用(隐藏)浏览按钮。 |
CMFCEditBrowseCtrl::EnableFileBrowseButton | 启用浏览按钮,并使编辑浏览控件处于“文件浏览”模式。 |
CMFCEditBrowseCtrl::EnableFolderBrowseButton | 启用浏览按钮,并使编辑浏览控件处于“文件夹浏览”模式。 |
CMFCEditBrowseCtrl::GetMode | 返回当前浏览模式。 |
CMFCEditBrowseCtrl::OnAfterUpdate | 在编辑浏览控件已更新浏览操作结果后由框架调用。 |
CMFCEditBrowseCtrl::OnBrowse | 在用户单击浏览按钮后由框架调用。 |
CMFCEditBrowseCtrl::OnChangeLayout | 重新绘制当前编辑浏览控件。 |
CMFCEditBrowseCtrl::OnDrawBrowseButton | 由框架调用以绘制浏览按钮。 |
CMFCEditBrowseCtrl::OnIllegalFileName | 在编辑控件中输入非法文件名时由框架调用。 |
CMFCEditBrowseCtrl::PreTranslateMessage |
在将窗口消息发送到 TranslateMessage 和 DispatchMessage Windows 函数之前,对此消息进行转换。 有关语法和详细信息,请参阅 CWnd::PreTranslateMessage。 |
CMFCEditBrowseCtrl::SetBrowseButtonImage | 设置浏览按钮的自定义图像。 |
注解
使用编辑浏览控件选择文件或文件夹名称。 (可选)使用控件执行自定义操作,例如显示对话框。 可以显示或不显示浏览按钮,并且可以在按钮上应用自定义标签或图像。
编辑浏览控件的浏览模式决定了是否显示浏览按钮,以及在单击该按钮时要执行的操作。 有关详细信息,请参阅 GetMode 方法。
CMFCEditBrowseCtrl
类支持以下模式。
自定义模式
当用户单击浏览按钮时,将执行自定义操作。 例如,你可以显示特定于应用程序的对话框。
文件模式
当用户单击浏览按钮时,将显示标准文件选择对话框。
文件夹模式
当用户单击浏览按钮时,将显示标准文件夹选择对话框。
如何:指定编辑浏览控件
执行以下步骤,在应用程序中加入一个编辑浏览控件:
如果要实现自定义浏览模式,请从
CMFCEditBrowseCtrl
类派生你自己的类,然后重写 CMFCEditBrowseCtrl::OnBrowse 方法。 在重写的方法中,执行自定义浏览操作,并使用结果更新编辑浏览控件。将
CMFCEditBrowseCtrl
对象或派生的编辑浏览控件对象嵌入到父窗口对象中。如果你使用“类向导”创建对话框,请将编辑控件 (
CEdit
) 添加到对话框窗体。 此外,添加一个变量以访问头文件中的控件。 在头文件中,将变量的类型从CEdit
更改为CMFCEditBrowseCtrl
。 此时将自动创建编辑浏览控件。 如果不是使用“类向导”,请将CMFCEditBrowseCtrl
变量添加到头文件,然后调用其Create
方法。如果将编辑浏览控件添加到对话框,请使用 ClassWizard 工具设置数据交换。
调用 EnableFolderBrowseButton、EnableFileBrowseButton 或 EnableBrowseButton 方法以设置浏览模式并显示浏览按钮。 调用 GetMode 方法以获取当前浏览模式。
若要为浏览按钮提供自定义图像,请调用 SetBrowseButtonImage 方法或重写 OnDrawBrowseButton 方法。
若要从编辑浏览控件中删除浏览按钮,请调用 EnableBrowseButton 方法并将 bEnable 参数设置为 FALSE。
继承层次结构
示例
下面的示例演示了如何使用 CMFCEditBrowseCtrl
类中的两种方法:EnableFolderBrowseButton
和 EnableFileBrowseButton
。 本示例是新控件示例的一部分。
CMFCEditBrowseCtrl m_wndFolderEdit;
CMFCEditBrowseCtrl m_wndFileEdit;
// enable the browse button and put the control in file browse mode
m_wndFolderEdit.EnableFolderBrowseButton();
// enable the browse button and put the control in the folder browse mode
m_wndFileEdit.EnableFileBrowseButton();
要求
标头:afxeditbrowsectrl.h
CMFCEditBrowseCtrl::EnableBrowseButton
在当前编辑浏览控件上显示或不显示浏览按钮。
void EnableBrowseButton(
BOOL bEnable=TRUE,
LPCTSTR szLabel=_T("..."));
参数
bEnable
如果显示浏览按钮,则为 TRUE;如果不显示浏览按钮,则为 FALSE。 默认值为 TRUE。
szLabel
在浏览按钮上显示的标签。 默认值为“...”。
备注
如果 bEnable 参数为 TRUE,则实现在用户单击浏览按钮时要执行的自定义操作。 为了实现自定义操作,请从 CMFCEditBrowseCtrl
类派生一个类,然后重写其 OnBrowse 方法。
如果 bEnable 参数为 TRUE,则控件的浏览模式为 BrowseMode_Default
;否则,浏览模式为 BrowseMode_None
。 有关浏览模式的详细信息,请参阅 GetMode 方法。
CMFCEditBrowseCtrl::EnableFileBrowseButton
在当前编辑浏览控件上显示浏览按钮,然后使控件处于“文件浏览”模式。
void EnableFileBrowseButton(
LPCTSTR lpszDefExt=NULL,
LPCTSTR lpszFilter=NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);
参数
lpszDefExt
指定在文件选择对话框中使用的默认文件扩展名。 默认值为 NULL。
lpszFilter
指定在文件选择对话框中使用的默认筛选器字符串。 默认值为 NULL。
dwFlags
对话框标志。 默认值是 OFN_HIDEREADONLY 和 OFN_OVERWRITEPROMPT 的按位组合 (OR)。
备注
当编辑浏览控件处于文件浏览模式,并且在用户单击浏览按钮时,该控件将显示标准文件选择对话框。
有关可用标志的完整列表,请参阅 OPENFILENAME 结构。
CMFCEditBrowseCtrl::EnableFolderBrowseButton
在当前编辑浏览控件上显示浏览按钮,然后使控件处于“文件夹浏览”模式。
void EnableFolderBrowseButton();
注解
当编辑浏览控件处于文件夹浏览模式时,如果用户单击浏览按钮,该控件将显示标准文件夹选择对话框。
CMFCEditBrowseCtrl::GetMode
检索当前编辑浏览控件的浏览模式。
CMFCEditBrowseCtrl::BrowseMode GetMode() const;
返回值
指定编辑浏览控件的当前模式的枚举值之一。 浏览模式决定了框架是否显示浏览按钮,以及在用户单击该按钮时要执行的操作。
下表列出可能的返回值。
值 | 说明 |
---|---|
BrowseMode_Default |
自定义模式。 将执行程序员定义的操作。 |
BrowseMode_File |
文件模式。 将显示标准文件浏览器对话框。 |
BrowseMode_Folder |
文件夹模式。 将显示标准文件夹浏览器对话框。 |
BrowseMode_None |
不显示浏览按钮。 |
备注
默认情况下,CMFCEditBrowseCtrl
对象被初始化为 BrowseMode_None
模式。 使用 CMFCEditBrowseCtrl::EnableBrowseButton、CMFCEditBrowseCtrl::EnableFileBrowseButton 和 CMFCEditBrowseCtrl::EnableFolderBrowseButton 方法修改浏览模式。
CMFCEditBrowseCtrl::OnAfterUpdate
在编辑浏览控件已更新浏览操作结果后由框架调用。
virtual void OnAfterUpdate();
备注
在派生类中重写此方法可实现自定义的操作。
CMFCEditBrowseCtrl::OnBrowse
在用户单击编辑浏览控件的浏览按钮后由框架调用。
virtual void OnBrowse();
备注
当用户单击编辑浏览控件的浏览按钮时,使用此方法执行自定义代码。 从 CMFCEditBrowseCtrl
类派生你自己的类并重写其 OnBrowse
方法。 在该方法中,实现自定义浏览操作,并选择性地更新编辑浏览控件的文本框。 在应用程序中,使用 EnableBrowseButton 方法使编辑浏览控件处于“自定义浏览”模式。
CMFCEditBrowseCtrl::OnChangeLayout
重新绘制当前编辑浏览控件。
virtual void OnChangeLayout();
备注
当编辑浏览控件的浏览模式发生变化时,框架将调用此方法。 有关详细信息,请参阅 CMFCEditBrowseCtrl::GetMode。
CMFCEditBrowseCtrl::OnDrawBrowseButton
由框架调用以在编辑浏览控件上绘制浏览按钮。
virtual void OnDrawBrowseButton(
CDC* pDC,
CRect rect,
BOOL bIsButtonPressed,
BOOL bIsButtonHot);
参数
pDC
一个指向设备上下文的指针。
矩形
浏览按钮的边框。
bIsButtonPressed
如果按下按钮,则为 TRUE;否则为 FALSE。
bIsButtonHot
如果突出显示按钮,则为 TRUE;否则为 FALSE。
备注
在派生类中重写此函数以自定义浏览按钮的外观。
CMFCEditBrowseCtrl::SetBrowseButtonImage
在编辑浏览控件的浏览按钮上设置自定义图像。
void SetBrowseButtonImage(
HICON hIcon,
BOOL bAutoDestroy= TRUE);
void SetBrowseButtonImage(
HBITMAP hBitmap,
BOOL bAutoDestroy= TRUE);
void SetBrowseButtonImage(UINT uiBmpResId);
参数
hIcon
图标的句柄。
hBitmap
位图的句柄。
uiBmpResId
位图的资源 ID。
bAutoDestroy
如果在此方法退出时要删除指定的图标或位图,则为 TRUE;否则为 FALSE。 默认值为 TRUE。
注解
使用此方法将自定义图像应用于浏览按钮。 默认情况下,当编辑浏览控件处于“文件浏览”或“文件夹浏览”模式时,框架将获取标准图像。
CMFCEditBrowseCtrl::OnIllegalFileName
在编辑控件中输入非法文件名时由框架调用。
virtual BOOL OnIllegalFileName(CString& strFileName);
参数
strFileName
指定非法文件名。
返回值
如果无法将此文件名进一步传递给文件对话框,则应返回 FALSE。 在这种情况下,焦点将设置回编辑控件,用户应继续编辑。 默认实现会显示一个消息框,将非法文件名告知用户,并返回 FALSE。 可以重写此方法,更正文件名,并返回 TRUE 以便进一步处理。