COleControlContainer 類別

注意

Microsoft 基礎類別(MFC)函式庫持續被支援。 不過,我們不再新增功能或更新文件。

做為 ActiveX 控制項的控制項容器。

語法

class COleControlContainer : public CCmdTarget

成員

公用建構函式

名稱 描述
COleControlContainer::COleControlContainer 建構 COleControlContainer 物件。

公用方法

名稱 描述
COleControlContainer::AttachControlSite 建立由容器裝載的控件網站。
COleControlContainer::BroadcastAmbientPropertyChange 通知所有裝載的控件環境屬性已變更。
COleControlContainer::CheckDlgButton 修改指定的按鈕控制件。
COleControlContainer::CheckRadioButton 選取群組的指定單選按鈕。
COleControlContainer::CreateControl 建立裝載的 ActiveX 控制件。
COleControlContainer::CreateOleFont 建立 OLE 字型。
COleControlContainer::FindItem 傳回指定控制件的自訂網站。
COleControlContainer::FreezeAllEvents 判斷控件網站是否接受事件。
COleControlContainer::GetAmbientProp 擷取指定的環境屬性。
COleControlContainer::GetDlgItem 擷取指定的對話框控制件。
COleControlContainer::GetDlgItemInt 擷取指定之對話框控制件的值。
COleControlContainer::GetDlgItemText 擷取指定之對話框控件的標題。
COleControlContainer::HandleSetFocus 判斷容器是否處理WM_SETFOCUS訊息。
COleControlContainer::HandleWindowlessMessage 處理傳送至無視窗控制件的訊息。
COleControlContainer::IsDlgButtonChecked 決定指定按鈕的狀態。
COleControlContainer::OnPaint 呼叫 以重新繪出容器的一部分。
COleControlContainer::OnUIActivate 當控件即將就地啟用時呼叫。
COleControlContainer::OnUIDeactivate 即將停用控件時呼叫。
COleControlContainer::ScrollChildren 從子視窗接收捲動訊息時,由架構呼叫。
COleControlContainer::SendDlgItemMessage 將訊息傳送至指定的控制項。
COleControlContainer::SetDlgItemInt 設定指定控制件的值。
COleControlContainer::SetDlgItemText 設定指定控件的文字。

公用資料成員

名稱 描述
COleControlContainer::m_crBack 容器的背景色彩。
COleControlContainer::m_crFore 容器的前景色彩。
COleControlContainer::m_listSitesOrWnds 支援的控件網站清單。
COleControlContainer::m_nWindowlessControls 裝載的無視窗控制件數目。
COleControlContainer::m_pOleFont 自定義控件網站的 OLE 字型指標。
COleControlContainer::m_pSiteCapture 擷取控件網站的指標。
COleControlContainer::m_pSiteFocus 目前具有輸入焦點之控件的指標。
COleControlContainer::m_pSiteUIActive 目前已就地啟動之控件的指標。
COleControlContainer::m_pWnd 實作控件容器之視窗的指標。
COleControlContainer::m_siteMap 網站地圖。

備註

這是藉由提供一或多個 ActiveX 控制月臺的支援來完成(由 實作)。COleControlSite COleControlContainer 完全實作 IOleInPlaceFrame 和 IOleContainer 介面,讓內含的 ActiveX 控制項符合其就地項目資格。

通常,這個類別會與 和 COccManager 搭配COleControlSite使用,以實作自定義 ActiveX 控件容器,以及一或多個 ActiveX 控制件的自訂網站。

繼承階層架構

CObject

CCmdTarget

COleControlContainer

需求

標頭: afxocc.h

COleControlContainer::AttachControlSite

由架構呼叫以建立和附加控件網站。

virtual void AttachControlSite(
    CWnd* pWnd,
    UINT nIDC = 0);

void AttachControlSite(
    CWnd* pWnd,
    UINT nIDC = 0);

參數

pWnd
CWnd 物件的指標。

nIDC
要附加之控件的標識碼。

備註

如果您想要自定義此程式,請覆寫此函式。

注意

如果您要靜態連結至 MFC 連結庫,請使用此函式的第一種形式。 如果您要動態連結至 MFC 連結庫,請使用第二個表單。

COleControlContainer::BroadcastAmbientPropertyChange

通知所有裝載的控件環境屬性已變更。

virtual void BroadcastAmbientPropertyChange(DISPID dispid);

參數

dispid
要變更之環境屬性的分派標識碼。

備註

當環境屬性變更值時,架構會呼叫此函式。 覆寫此函式以自定義此行為。

COleControlContainer::CheckDlgButton

修改按鈕的目前狀態。

virtual void CheckDlgButton(
    int nIDButton,
    UINT nCheck);

參數

nIDButton
要修改之按鈕的標識碼。

nCheck
指定按鈕的狀態。 可以是下列其中一項:

  • BST_CHECKED將按鈕狀態設定為已核取。

  • BST_INDETERMINATE將按鈕狀態設定為灰色,表示不確定狀態。 只有當按鈕具有BS_3STATE或BS_AUTO3STATE樣式時,才使用此值。

  • BST_UNCHECKED將按鈕狀態設定為已清除。

COleControlContainer::CheckRadioButton

選取群組中的指定單選按鈕,並清除群組中的其餘按鈕。

virtual void CheckRadioButton(
    int nIDFirstButton,
    int nIDLastButton,
    int nIDCheckButton);

參數

nIDFirstButton
指定群組中第一個單選按鈕的標識碼。

nIDLastButton
指定群組中最後一個單選按鈕的標識碼。

nIDCheckButton
指定要檢查之單選按鈕的識別碼。

COleControlContainer::COleControlContainer

建構 COleControlContainer 物件。

explicit COleControlContainer(CWnd* pWnd);

參數

pWnd
控件容器之父視窗的指標。

備註

成功建立 物件之後,請新增自訂控件網站, AttachControlSite並呼叫 。

COleControlContainer::CreateControl

建立由指定 COleControlSite 物件裝載的 ActiveX 控制件。

BOOL CreateControl(
    CWnd* pWndCtrl,
    REFCLSID clsid,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    const RECT& rect,
    UINT nID,
    CFile* pPersist =NULL,
    BOOL bStorage =FALSE,
    BSTR bstrLicKey =NULL,
    COleControlSite** ppNewSite =NULL);

BOOL CreateControl(
    CWnd* pWndCtrl,
    REFCLSID clsid,
    LPCTSTR lpszWindowName,
    DWORD dwStyle,
    const POINT* ppt,
    const SIZE* psize,
    UINT nID,
    CFile* pPersist =NULL,
    BOOL bStorage =FALSE,
    BSTR bstrLicKey =NULL,
    COleControlSite** ppNewSite =NULL);

參數

pWndCtrl
代表控件之窗口物件的指標。

clsid
控制項的唯一類別 ID。

lpszWindowName
要顯示在控件中之文字的指標。 設定控件的 Caption 或 Text 屬性的值(如果有的話)。 如果為 NULL,則不會變更控件的 Caption 或 Text 屬性。

dwStyle
視窗樣式。 可用的樣式列在 [備註] 區段底下。

rect
指定控制項的大小和位置。 它可以是 CRect 對象或 RECT 結構。

nID
指定控制件的子視窗識別碼。

pPersist
的指標 CFile ,包含控件的永續性狀態。 默認值為 NULL,表示控件會初始化本身,而不會從任何永續性記憶體還原其狀態。 如果不是 NULL,它應該是包含控件之永續性數據的衍生物件的指標 CFile,格式為數據流或記憶體。 此資料可能已儲存在用戶端先前的啟用中。 CFile可以包含其他數據,但必須在呼叫 CreateControl時將其讀寫指標設定為持續性數據的第一個字節。

bStorage
指出 pPersist 中的數據是否應該解譯為 IStorage 或 IStream 數據。 如果 pPersist 中的數據是記憶體,bStorage 應該是 TRUE。 如果 pPersist 中的數據是數據流,bStorage 應該是 FALSE。 預設值為 FALSE。

bstrLicKey
選擇性授權金鑰數據。 此數據僅適用於建立需要運行時間授權金鑰的控制件。 如果控件支持授權,您必須提供授權密鑰,才能成功建立控件。 預設值是 NULL。

ppNewSite
將裝載所建立控件之現有控件網站的指標。 默認值為 NULL,表示新的控制項網站將會自動建立並附加至新控件。

ppt
包含控件左上角之 結構的指標 POINT 。 控件的大小取決於 psize 的值。 ppt 和 psize 值是指定控件大小和位置的選擇性方法。

psize
結構的指標 SIZE ,其中包含控件的大小。 左上角取決於ppt的值。 ppt 和 psize 值是指定控件大小和位置的選擇性方法。

傳回值

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

備註

僅支援 Windows CreateControl 旗標的子集:

  • WS_VISIBLE建立一開始可見的視窗。 如果您想要讓控件立即顯示,則需要 ,就像一般窗口一樣。

  • WS_DISABLED建立一開始停用的視窗。 停用的視窗無法從使用者接收輸入。 如果控件具有 Enabled 屬性,可以設定。

  • WS_BORDER建立具有細線框線的視窗。 如果控件具有 BorderStyle 屬性,可以設定。

  • WS_GROUP 指定控件群組的第一個控制件。 使用者可以使用方向鍵,將鍵盤焦點從群組中的一個控件變更為下一個控件。 第一個控件屬於同一個群組之後,以WS_GROUP樣式定義的所有控件。 具有WS_GROUP樣式的下一個控件會結束群組,並啟動下一個群組。

  • WS_TABSTOP 指定當使用者按下 TAB 鍵時,可以接收鍵盤焦點的控件。 按下 TAB 鍵會將鍵盤焦點變更為WS_TABSTOP樣式的下一個控件。

使用第二個多載來建立預設大小的控制件。

COleControlContainer::CreateOleFont

建立 OLE 字型。

void CreateOleFont(CFont* pFont);

參數

pFont
控件容器所要使用的字型指標。

COleControlContainer::FindItem

尋找裝載指定專案的自訂網站。

virtual COleControlSite* FindItem(UINT nID) const;

參數

nID
要找到之項目的標識碼。

傳回值

指定專案之自定義網站的指標。

COleControlContainer::FreezeAllEvents

判斷容器是否會忽略附加控件網站的事件,或接受事件。

void FreezeAllEvents(BOOL bFreeze);

參數

bFreeze
如果將處理事件,則為非零;否則為 0。

備註

注意

如果控件容器要求,則不需要控件停止引發事件。 它可以繼續引發,但控制容器會忽略所有後續事件。

COleControlContainer::GetAmbientProp

擷取指定環境屬性的值。

virtual BOOL GetAmbientProp(
    COleControlSite* pSite,
    DISPID dispid,
    VARIANT* pvarResult);

參數

pSite
要從中擷取環境屬性之控件網站的指標。

dispid
所需環境屬性的分派標識碼。

pVarResult
環境屬性值的指標。

傳回值

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

COleControlContainer::GetDlgItem

擷取對話框或其他視窗中指定控件或子視窗的指標。

virtual CWnd* GetDlgItem(int nID) const;

virtual void GetDlgItem(
    int nID,
    HWND* phWnd) const;

參數

nID
要擷取之對話框項目的標識碼。

phWnd
指定之對話框項目視窗物件的句柄指標。

傳回值

對話框項目視窗的指標。

COleControlContainer::GetDlgItemInt

擷取指定控件之翻譯文字的值。

virtual UINT GetDlgItemInt(
    int nID,
    BOOL* lpTrans,
    BOOL bSigned) const;

參數

nID
控件的標識碼。

lpTrans
接收函式成功/失敗值的布爾變數指標(TRUE 表示成功,FALSE 表示失敗)。

bSigned
指定函式是否應該檢查開頭減號的文字,並在找到負號時傳回帶正負號的值。 如果 bSigned 參數為 TRUE,指定要擷取的值是帶正負號的整數值,請將傳回值int轉換為類型。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。

傳回值

如果成功,lpTrans 所指向的變數會設定為 TRUE,而傳回值則是控件文字的轉譯值。

如果函式失敗,lpTrans 所 指向的 變數會設定為 FALSE,且傳回值為零。 請注意,由於零是可能的轉譯值,因此零的傳回值本身不會指出失敗。

如果 lpTrans 為 NULL,則函式不會傳回成功或失敗的相關信息。

備註

函式會藉由去除文字開頭的任何額外空格,然後轉換小數位數,來轉譯擷取的文字。 函式會在到達文字結尾或遇到非數值字元時停止翻譯。

如果翻譯的值大於INT_MAX(針對帶正負號的數位)或UINT_MAX,則此函式會傳回零(針對未帶正負號的數位)。

COleControlContainer::GetDlgItemText

擷取指定控件的文字。

virtual int GetDlgItemText(
    int nID,
    LPTSTR lpStr,
    int nMaxCount) const;

參數

nID
控件的標識碼。

lpStr
控件文字的指標。

nMaxCount
指定要複製到 lpStr 所指向之緩衝區的最大長度,以字元為單位。 如果字串的長度超過限制,則會截斷字串。

傳回值

如果函式成功,傳回值會指定複製到緩衝區的字元數,不包括終止的 Null 字元。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。

COleControlContainer::HandleSetFocus

判斷容器是否處理WM_SETFOCUS訊息。

virtual BOOL HandleSetFocus();

傳回值

如果容器處理WM_SETFOCUS訊息,則為非零;否則為零。

COleControlContainer::HandleWindowlessMessage

處理無視窗控制件的視窗訊息。

virtual BOOL HandleWindowlessMessage(
    UINT message,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT* plResult);

參數

message
視窗訊息的標識碼,由 Windows 提供。

wParam
訊息的參數;由 Windows 提供。 指定其他訊息特定資訊。 此參數的內容取決於訊息參數的值。

lParam
訊息的參數;由 Windows 提供。 指定其他訊息特定資訊。 此參數的內容取決於訊息參數的值。

plResult
Windows 結果碼。 指定訊息處理的結果,並取決於傳送的訊息。

傳回值

如果成功則不為零,否則為 0。

備註

覆寫此函式以自定義無視窗控制件訊息的處理。

COleControlContainer::IsDlgButtonChecked

決定指定按鈕的狀態。

virtual UINT IsDlgButtonChecked(int nIDButton) const;

參數

nIDButton
按鈕控件的標識碼。

傳回值

從以BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTTON或BS_3STATE樣式建立的按鈕傳回值。 可以是下列其中一項:

  • 已核取 [BST_CHECKED按鈕]。

  • BST_INDETERMINATE Button 呈現灰色,表示不確定狀態(只有在按鈕具有BS_3STATE或BS_AUTO3STATE樣式時才適用)。

  • 已清除 [BST_UNCHECKED按鈕]。

備註

如果按鈕是三狀態控件,則成員函式會判斷它是否呈現暗灰色、已核取或兩者都沒有。

COleControlContainer::m_crBack

容器的背景色彩。

COLORREF m_crBack;

COleControlContainer::m_crFore

容器的前景色彩。

COLORREF m_crFore;

COleControlContainer::m_listSitesOrWnds

容器所裝載的控制網站清單。

CTypedPtrList<CPtrList, COleControlSiteOrWnd*> m_listSitesOrWnds;

COleControlContainer::m_nWindowlessControls

控件容器所裝載的無視窗控制項數目。

int m_nWindowlessControls;

COleControlContainer::m_pOleFont

自定義控件網站的 OLE 字型指標。

LPFONTDISP m_pOleFont;

COleControlContainer::m_pSiteCapture

擷取控件網站的指標。

COleControlSite* m_pSiteCapture;

COleControlContainer::m_pSiteFocus

目前具有輸入焦點的控制月臺指標。

COleControlSite* m_pSiteFocus;

COleControlContainer::m_pSiteUIActive

已啟動就地控制月臺的指標。

COleControlSite* m_pSiteUIActive;

COleControlContainer::m_pWnd

與容器相關聯的窗口物件的指標。

CWnd* m_pWnd;

COleControlContainer::m_siteMap

網站地圖。

CMapPtrToPtr m_siteMap;

COleControlContainer::OnPaint

由架構呼叫以處理WM_PAINT要求。

virtual BOOL OnPaint(CDC* pDC);

參數

pDC
容器所使用之裝置內容的指標。

傳回值

如果已處理訊息,則為非零;否則為零。

備註

覆寫此函式以自定義繪製程式。

COleControlContainer::OnUIActivate

當控制月臺由 pSite 指向時,由架構呼叫,即將就地啟動。

virtual void OnUIActivate(COleControlSite* pSite);

參數

pSite
即將啟動之控件網站的指標。

備註

就地啟用表示容器的主功能表會取代為就地複合功能表。

COleControlContainer::OnUIDeactivate

當控制月臺由 pSite 指向時,由架構呼叫,即將停用。

virtual void OnUIDeactivate(COleControlSite* pSite);

參數

pSite
即將停用之控件網站的指標。

備註

收到此通知時,容器應該重新安裝其使用者介面並取得焦點。

COleControlContainer::ScrollChildren

從子視窗接收捲動訊息時,由架構呼叫。

virtual void ScrollChildren(
    int dx,
    int dy);

參數

dx
沿著 X 軸捲動的數量,以像素為單位。

dy
沿著 Y 軸捲動的數量,以像素為單位。

COleControlContainer::SendDlgItemMessage

將訊息傳送至指定的控制項。

virtual LRESULT SendDlgItemMessage(
    int nID,
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

參數

nID
指定接收訊息之控件的識別碼。

message
指定要傳送的訊息。

wParam
指定其他訊息特定資訊。

lParam
指定其他訊息特定資訊。

COleControlContainer::SetDlgItemInt

將對話框中控件的文字設定為指定整數值的字串表示。

virtual void SetDlgItemInt(
    int nID,
    UINT nValue,
    BOOL bSigned);

參數

nID
控件的標識碼。

nValue
要顯示的整數值。

bSigned
指定 nValue 參數是帶正負號還是不帶正負號。 如果此參數為TRUE, 則 nValue 已簽署。 如果此參數為 TRUE 且 nValue 小於零,則會在字串中的第一個數位之前放置減號。 如果此參數為 FALSE, 則 nValue 為 unsigned。

COleControlContainer::SetDlgItemText

使用 lpszString 中包含的文字,設定指定控件的文字。

virtual void SetDlgItemText(
    int nID,
    LPCTSTR lpszString);

參數

nID
控件的標識碼。

lpszString
控件文字的指標。

另請參閱

CCmdTarget 類別
階層架構圖表
COleControlSite 類別
COccManager 類別