Visual C++ 9.0Windows 2008Windows VistaWindows 2003Visual Studio 2008Windows XPMFCIntermediateDevVisual StudioWindowsC++
MFC Feature Pack - CMFCEditBrowseCtrl






4.69/5 (5投票s)
MFC Feature Pack - CMFCEditBrowseCtrl
CMFCEditBrowseCtrl?
这是一个特殊的编辑控件 (MFC Feature Pack VS2008),其右侧附加了一个浏览按钮。当我们点击这个按钮时,会弹出一个打开文件对话框或者打开文件夹对话框。请参考这个示例截图。
浏览编辑控件示例
此外,这个控件允许我们通过重写类的 OnBrowse
函数来实现我们自己的事件处理。 这是一个很棒的控件,我非常喜欢它,因为我知道创建一个这样的控件有多么痛苦。
一些关于如何制作这样一个控件的提示...
- 处理
nc calcsize
事件,以便您可以指定浏览按钮所占据区域的大小,从而导致编辑控件调整其客户端区域以适应按钮。 - 处理
nc paint
以绘制按钮,此外,您还必须在开始时强制生成一次nc calcsize
消息。 - 处理鼠标抬起和鼠标按下事件。
用法
- 您应该在 VS2008 SP1 或安装了 Feature Pack 的环境下工作。
- 向对话框添加一个编辑控件。
- 打开这个对话框类的 .h 文件,并添加一个成员变量 -
CMFCEditBrowseCtrl m_EditBrowse;
- 打开 .cpp 文件,并在
DoDataExchange
中添加一个调用以子类化这个项目。DDX_Control( pDX, IDC_EDIT_FILEBROWSE, m_EditBrowse);
- 然后在
OnInitDialog
中...// Note: Only one of these calls will work at a time! m_EditBrowse.EnableFileBrowseButton(); // To show file open dialog m_EditBrowse.EnableFolderBrowseButton(); // To show folder browse dialog m_EditBrowse.EnableBrowseButton(); // To do custom event handling
- 就是这样,现在你已经成功地让浏览编辑控件工作了。
- 请注意,上述调用采用了一些参数(具有默认值),请在 MSDN 中查找。
浏览按钮的自定义事件处理
这里有一个关于如何处理自定义浏览按钮事件处理的小例子,取自 MSDN 示例...
class CMyBrowseEdit : public CMFCEditBrowseCtrl
{
virtual void OnBrowse()
{
MessageBox(_T("Browse item..."));
SetWindowText(_T("New value!"));
}
};
更多...
使用 SetBrowseButtonImage
来更改浏览按钮的图像,还可以选择维护这样的位图或图标。 还有一些更有用的虚拟函数...
OnDrawBrowseButton
- 重写以从您这边进行一些额外的绘画。OnChangeLayout
- 当浏览按钮模式改变时调用,例如从文件夹模式到文件模式等等。(我猜是这样)
发布于 CodeProject, MFC 标签: CEdit, CMFCEditBrowseCtrl, Extending edit controls, MFC Feature Pack