共用方式為


COleControlContainer 類別

做為 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 完全實作 IOleInPlaceFrameIOleContainer 介面,讓內含的 ActiveX 控制項符合其就地項目資格。

通常,這個類別會與 和 COleControlSite 搭配COccManager使用,以實作自定義 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 中的數據是否應該解譯為 IStorageIStream 數據。 如果 pPersist 中的數據是記憶體,bStorage 應該是 TRUE。 如果 pPersist 中的數據是數據流,bStorage 應該是 FALSE。 預設值為 FALSE。

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

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

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

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

傳回值

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

備註

僅支援 CreateControlWindows dwStyle 旗標的子集:

  • 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 類別