分享方式:


CMouseManager 類別

當使用者在該檢視內按兩下時,允許使用者將不同的命令與特定 CView 物件產生關聯。

語法

class CMouseManager : public CObject

成員

公用方法

名稱 描述
CMouseManager::AddView CView 物件加入至 [自定義 ] 對話方塊。 [ 自訂 ] 對話框可讓使用者將按兩下與每個列出的檢視命令產生關聯。
CMouseManager::GetViewDblClickCommand 傳回使用者按兩下所提供檢視時所執行的命令。
CMouseManager::GetViewIconId 傳回與所提供檢視標識符相關聯的圖示。
CMouseManager::GetViewIdByName 傳回與所提供檢視名稱相關聯的檢視標識碼。
CMouseManager::GetViewNames 擷取所有已新增檢視名稱的清單。
CMouseManager::LoadState CMouseManager從 Windows 登錄載入狀態。
CMouseManager::SaveState CMouseManager 狀態寫入 Windows 登錄。
CMouseManager::SetCommandForDblClk 將提供的命令和提供的檢視產生關聯。

備註

類別 CMouseManager 會維護物件的集合 CView 。 每個檢視都是以名稱和標識碼來識別。 這些檢視會顯示在 [ 自定義 ] 對話框中。 使用者可以透過 [自定義 ] 對話框,變更與任何檢視相關聯的命令。 當使用者在該檢視中按兩下時,就會執行相關聯的命令。 若要從程式代碼撰寫的觀點支援此功能,您必須處理WM_LBUTTONDBLCLK訊息,並在該CView物件的程式代碼中呼叫 CWinAppEx::OnViewDoubleClick 函式。

您不應該手動建立 CMouseManager 物件。 它會由應用程式的架構所建立。 當用戶結束應用程式時,它也會自動終結。 若要取得應用程式的滑鼠管理員指標,請呼叫 CWinAppEx::GetMouseManager

繼承階層架構

CObject

CMouseManager

需求

標頭: afxmousemanager.h

CMouseManager::AddView

CMouseManager 類別註冊 CView 物件,以支援自定義滑鼠行為。

BOOL AddView(
    int iViewId,
    UINT uiViewNameResId,
    UINT uiIconId = 0);

BOOL AddView(
    int iId,
    LPCTSTR lpszViewName,
    UINT uiIconId = 0);

參數

iViewId
[in]檢視標識碼。

uiViewNameResId
[in]參考檢視名稱的資源字串標識碼。

uiIconId
[in]檢視示標識碼。

iId
[in]檢視標識碼。

lpszViewName
[in]檢視名稱。

傳回值

如果成功則為非零;否則為 0。

備註

若要支援自定義滑鼠行為,檢視必須向 CMouseManager 對象註冊。 任何衍生自 CView 類別的物件都可以向滑鼠管理員註冊。 與檢視相關聯的字串和圖示會顯示在 [自定義] 對話方塊的 [滑鼠] 索引標籤中。

程序設計人員有責任建立和維護檢視標識碼,例如 iViewId 和 iId

如需如何提供自定義滑鼠行為的詳細資訊,請參閱 鍵盤和滑鼠自定義

範例

下列範例示範如何使用 類別中的 CMouseManager 方法和 方法AddView,擷取 物件的CWinAppEx::GetMouseManager指標CMouseManager。 此代碼段是 State Collection 範例一部分。

GetMouseManager()->AddView(IDR_MAINFRAME, _T("My view"), IDR_MAINFRAME);

CMouseManager::GetViewDblClickCommand

傳回使用者按兩下所提供檢視時所執行的命令。

UINT GetViewDblClickCommand(int iId) const;

參數

iId
[in] 檢視識別碼。

傳回值

如果檢視與命令相關聯,則為命令標識符;否則為 0。

CMouseManager::GetViewIconId

擷取與檢視標識符相關聯的圖示。

UINT GetViewIconId(int iViewId) const;

參數

iViewId
[in] 檢視識別碼。

傳回值

如果成功,圖標資源標識符;否則為 0。

備註

如果未先使用 CMouseManager::AddView 註冊檢視,這個方法將會失敗。

CMouseManager::GetViewIdByName

擷取與檢視名稱相關聯的檢視標識碼。

int GetViewIdByName(LPCTSTR lpszName) const;

參數

lpszName
[in]檢視名稱。

傳回值

如果成功,則為檢視標識符;否則為 0。

備註

此方法會搜尋使用 CMouseManager::AddView 註冊的檢視。

CMouseManager::GetViewNames

擷取所有已註冊檢視名稱的清單。

void GetViewNames(CStringList& listOfNames) const;

參數

listOfNames
[out]對象的參考 CStringList

備註

這個方法會將參數 listOfNames 填入使用 CMouseManager::AddView 註冊的所有檢視名稱。

CMouseManager::LoadState

從登錄載入 CMouseManager 類別的狀態

BOOL LoadState(LPCTSTR lpszProfileName = NULL);

參數

lpszProfileName
[in]登錄機碼的路徑。

傳回值

如果成功則為非零;否則為 0。

備註

從登錄載入的狀態資訊包括已註冊的檢視、檢視標識碼,以及相關聯的命令。 如果參數 lpszProfileName 為 NULL,此函式會從 CWinAppEx 類別所控制的預設登錄位置載入CMouseManager數據。

在大部分情況下,您不需要直接呼叫此函式。 它稱為工作區初始化程式的一部分。 如需工作區初始化程式的詳細資訊,請參閱 CWinAppEx::LoadState

CMouseManager::SaveState

將 CMouseManager 類別的狀態寫入登錄。

BOOL SaveState(LPCTSTR lpszProfileName = NULL);

參數

lpszProfileName
[in]登錄機碼的路徑。

傳回值

如果成功則為非零;否則為 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 類別
鍵盤和滑鼠自訂