定制编辑框的上下文菜单
2006-04-05 11:18:49 来源:WEB开发网使用CeitMenuHandler类有三件事情要做(如果要把设计菜单本身算在内的话,那就有四件事情要做):
第一,实例化处理器。
class CMyEdit : public CEdit {
protected:
CEditMenuHandler m_editMenuHandler;
virtual void PreSubclassWindow();
};
第二,必须安装第一部创建的处理器。你可以在OnCreate做,但如果编辑框控制是在对话框中,则在PreSubclassWindow中安装,因为你不是正常地创建对话框控制:而是要进行子类化工作。安装完处理器,还得传递一个上下文菜单的ID:
void CMyEdit::PreSubclassWindow()
{
//IDR EDITMENU 是我的上下文菜单
m_editMenuHandler.Install(this, IDR_EDITMENU);
}
到了这一步,处理器已经安装并且已经准备就绪,只需要调用两个函数。OnUpdateEditCommand 更新菜单项;OnEditCommand 处理命令。
// CMyEdit 消息映射
ON_COMMAND_RANGE(ID_EDIT_FIRST,
ID_EDIT_LAST, OnEditCommand)
ON_UPDATE_COMMAND_UI_RANGE(ID_EDIT_FIRST,
ID_EDIT_LAST, OnUpdateEditCommand)
void CMyEdit::OnUpdateEditCommand(CCmdUI* pCmdUI)
{
m_editMenuHandler.OnUpdateEditCommand(pCmdUI));
}
void CMyEdit::OnEditCommand(UINT nID)
{
m_editMenuHandler.OnEditCommand(nID);
}
CEitMenuHandler把什么事情都做了,处理剪切、复制、粘贴和其它操作。根据是文档选中还是剪切板有内容等来使能或置灰(enables/disables)相应的菜单项。如果命令被处理,处理器函数返回TRUE;否则返回FALSE,如果你愿意,你可以处理其它编辑命令。例如,CMyEdit有单独的处理器处理TXT,BMP和JPG命令。
- ››定制个性化的对话框窗口类
- ››编辑CentOS vsftpd虚拟用户文件数据
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››编辑CentOS Samba系统工作
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››编辑环绕顶点实现Word 2007图片个性文字环绕
- ››定制AIX操作系统的shell环境
- ››定制任务栏上的系统菜单
- ››编辑器的改进
- ››编辑多乐趣 为Word文档加入背景音乐
更多精彩
赞助商链接