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

继承层次结构

CObject

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,指定的视图将不再与命令关联

另请参阅

层次结构图

CWinAppEx 类
键盘和鼠标自定义