COleControlContainer 類別
做為 ActiveX 控制項的控制項容器。
語法
class COleControlContainer : public CCmdTarget
成員
公用建構函式
名稱 | 描述 |
---|---|
COleControlContainer::COleControlContainer | 建構 COleControlContainer 物件。 |
公用方法
公用資料成員
名稱 | 描述 |
---|---|
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 控制項符合其就地項目資格。
通常,這個類別會與 和 COleControlSite
搭配COccManager
使用,以實作自定義 ActiveX 控件容器,以及一或多個 ActiveX 控制件的自訂網站。
繼承階層架構
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。
備註
僅支援 CreateControl
Windows 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
控件文字的指標。