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。
繼承階層架構
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,指定的檢視就不會再與命令相關聯。