CMouseManager 类
允许用户在视图内双击时将不同的命令与特定的 CView 对象关联。
语法
class CMouseManager : public CObject
成员
公共方法
名称 | 描述 |
---|---|
CMouseManager::AddView | 将 CView 对象添加到“自定义”对话框。 用户利用“自定义”对话框能够将双击与列出的每个视图的命令相关联。 |
CMouseManager::GetViewDblClickCommand | 返回用户在提供的视图内双击时执行的命令。 |
CMouseManager::GetViewIconId | 返回与提供的视图 ID 关联的图标。 |
CMouseManager::GetViewIdByName | 返回与提供的视图名称关联的视图 ID。 |
CMouseManager::GetViewNames | 检索所有添加的视图名称的列表。 |
CMouseManager::LoadState | 从 Windows 注册表加载 CMouseManager 。 |
CMouseManager::SaveState | 将 CMouseManager 状态写入 Windows 注册表。 |
CMouseManager::SetCommandForDblClk | 关联提供的命令和提供的视图。 |
备注
CMouseManager
类包含 CView
对象的集合。 每个视图由名称和 ID 标识。 这些视图显示在“自定义”对话框中。 用户可通过“自定义”对话框更改与任何视图关联的命令。 当用户在该视图内双击时,将执行关联的命令。 若要从编码角度支持此功能,必须处理 WM_LBUTTONDBLCLK 消息并在 CView
对象的代码中调用 CWinAppEx::OnViewDoubleClick 函数。
不应手动创建 CMouseManager
对象。 它将由应用程序的框架创建。 当用户退出应用程序时,它也将自动销毁。 若要为应用程序获取指向鼠标管理器的指针,请调用 CWinAppEx::GetMouseManager。
继承层次结构
CMouseManager
要求
标头:afxmousemanager.h
CMouseManager::AddView
将 CView 对象注册到 CMouseManager 类以支持自定义鼠标行为。
BOOL AddView(
int iViewId,
UINT uiViewNameResId,
UINT uiIconId = 0);
BOOL AddView(
int iId,
LPCTSTR lpszViewName,
UINT uiIconId = 0);
参数
iViewId
[in] 视图 ID。
uiViewNameResId
[in] 引用视图名称的资源字符串 ID。
uiIconId
[in] 视图图标 ID。
iId
[in] 视图 ID。
lpszViewName
[in] 视图名称。
返回值
如果成功,则不为 0;否则为 0。
备注
为支持自定义鼠标行为,视图必须注册到 CMouseManager
对象。 派生自 CView
类的任何对象都可以注册到鼠标管理器。 与视图关联的字符串和图标显示在“自定义”对话框的“鼠标”选项卡中。
程序员负责创建和维护 iViewId 和 iId 等视图 ID。
若要详细了解如何提供自定义鼠标行为,请参阅键盘和鼠标自定义。
示例
以下示例演示如何使用 CMouseManager
类中的 CWinAppEx::GetMouseManager
方法和 AddView
方法检索指向 CMouseManager
对象的指针。 此代码片段属于状态集合示例。
GetMouseManager()->AddView(IDR_MAINFRAME, _T("My view"), IDR_MAINFRAME);
CMouseManager::GetViewDblClickCommand
返回用户在提供的视图内双击时执行的命令。
UINT GetViewDblClickCommand(int iId) const;
参数
iId
[in] 视图 ID。
返回值
如果视图与命令相关联,则为命令标识符;否则为 0。
CMouseManager::GetViewIconId
检索与视图 ID 关联的图标。
UINT GetViewIconId(int iViewId) const;
参数
iViewId
[in] 视图 ID。
返回值
如果成功,则为图标资源标识符;否则为 0。
备注
如果视图首次注册没有使用 CMouseManager::AddView,则此方法将失败。
CMouseManager::GetViewIdByName
检索与视图名称关联的视图 ID。
int GetViewIdByName(LPCTSTR lpszName) const;
参数
lpszName
[in] 视图名称。
返回值
如果成功,则为视图 ID;否则为 0。
注解
此方法搜索使用 CMouseManager::AddView 注册的视图。
CMouseManager::GetViewNames
检索所有注册的视图名称的列表。
void GetViewNames(CStringList& listOfNames) const;
参数
listOfNames
[out] 对 CStringList
对象的引用。
备注
此方法用 CMouseManager::AddView 注册的所有视图的名称填充参数 listOfNames
。
CMouseManager::LoadState
从注册表加载 CMouseManager 类 的状态。
BOOL LoadState(LPCTSTR lpszProfileName = NULL);
参数
lpszProfileName
[in] 注册表项的路径。
返回值
如果成功,则不为 0;否则为 0。
备注
从注册表加载的状态信息包括已注册的视图、视图标识符和关联的命令。 如果参数 lpszProfileName 为 NULL,此函数将从 CWinAppEx 类控制的默认注册表位置加载 CMouseManager
数据。
多数情况下都不必直接调用此函数。 它作为工作区初始化过程的一部分调用。 若要详细了解工作区初始化过程,请参阅 CWinAppEx::LoadState。
CMouseManager::SaveState
将 CMouseManager 类 的状态写入注册表。
BOOL SaveState(LPCTSTR lpszProfileName = NULL);
参数
lpszProfileName
[in] 注册表项的路径。
返回值
如果成功,则不为 0;否则为 0。
注解
写入注册表的状态信息包括所有已注册的视图、视图标识符和关联的命令。 如果参数 lpszProfileName 为 NULL,此函数会将 CMouseManager
数据写入 CWinAppEx 类控制的默认注册表位置。
多数情况下都不必直接调用此函数。 它作为工作区序列化过程的一部分调用。 若要详细了解工作区序列化过程,请参阅 CWinAppEx::SaveState。
CMouseManager::SetCommandForDblClk
将自定义命令与首次注册到鼠标管理器的视图相关联。
void SetCommandForDblClk(
int iViewId,
UINT uiCmd);
参数
iViewId
[in] 视图标识符。
uiCmd
[in] 命令标识符。
备注
若要将自定义命令与视图相关联,必须先使用 CMouseManager::AddView 注册视图。 AddView
方法需要一个视图标识符作为输入参数。 注册视图后,可使用提供给 AddView
的相同视图标识符输入参数调用 CMouseManager::SetCommandForDblClk
。 此后,当用户在已注册的视图中双击鼠标时,应用程序将执行 uiCmd 指示的命令。若要支持自定义鼠标行为,还需要自定义注册到鼠标管理器的视图。 若要详细了解自定义鼠标行为,请参阅键盘和鼠标自定义。
如果 uiCmd 设置为 0,指定的视图将不再与命令关联。