AfxOleRegisterControlClass
使用 [Windows 系統註冊資料庫,註冊控制項類別。
BOOL AFXAPI AfxOleRegisterControlClass(
HINSTANCE hInstance,
REFCLSID clsid,
LPCTSTR pszProgID,
UINT idTypeName,
UINT idBitmap,
int nRegFlags,
DWORD dwMiscStatus,
REFGUID tlid,
WORD wVerMajor,
WORD wVerMinor
);
參數
hInstance
模組相關聯的控制項類別的執行個體控制代碼。clsid
控制項的唯一的類別 ID。pszProgID
獨一無二的方案 ID 的控制項。idTypeName
包含控制項的使用者可讀的型別名稱的字串資源識別碼。idBitmap
用來代表工具列或調色盤中的 OLE 控制項的點陣圖資源 ID。nRegFlags
包含一或多個下列旗標:afxRegInsertable可讓控制項出現在 [OLE 物件的 [插入物件] 對話方塊。
afxRegApartmentThreadingThreadingModel 到登錄中設定的執行緒模型 = 公寓。
afxRegFreeThreadingThreadingModel 到登錄中設定的執行緒模型 = 空閒。
您可以結合兩個旗標afxRegApartmentThreading和afxRegFreeThreading來設定 ThreadingModel = 兩者。 請參閱 InprocServer32 在Windows SDK如需有關執行緒模型註冊。
注意事項 在 MFC 4.2 之前的 MFC 版本intnRegFlags參數為 BOOL 參數, bInsertable,可允許或不允許從 [插入物件] 對話方塊插入控制項。
dwMiscStatus
包含一或多個下列狀態旗標 (旗標的說明,請參閱 OLEMISC 列舉型別在Windows SDK):OLEMISC_RECOMPOSEONRESIZE
OLEMISC_ONLYICONIC
OLEMISC_INSERTNOTREPLACE
OLEMISC_STATIC
OLEMISC_CANTLINKINSIDE
OLEMISC_CANLINKBYOLE1
OLEMISC_ISLINKOBJECT
OLEMISC_INSIDEOUT
OLEMISC_ACTIVATEWHENVISIBLE
OLEMISC_RENDERINGISDEVICEINDEPENDENT
OLEMISC_INVISIBLEATRUNTIME
OLEMISC_ALWAYSRUN
OLEMISC_ACTSLIKEBUTTON
OLEMISC_ACTSLIKELABEL
OLEMISC_NOUIACTIVATE
OLEMISC_ALIGNABLE
OLEMISC_IMEMODE
OLEMISC_SIMPLEFRAME
OLEMISC_SETCLIENTSITEFIRST
tlid
控制項類別的專一識別碼。wVerMajor
控制項類別的主要版本號碼。wVerMinor
控制項類別的次要版本號碼。
傳回值
已註冊控制項類別 ; 如果非零值 否則 0。
備註
如此可藉由感知 OLE 控制項容器控制項。 AfxOleRegisterControlClass使用控制項的名稱和在系統上的位置會更新登錄,也會設定在登錄中的控制項支援的執行緒模型。 如需詳細資訊,請參閱技術的附註 64,「 公寓模型執行緒在 OLE 控制項,」 和的相關處理序和執行緒在Windows SDK。
範例
// Member function implementation of class COleObjectFactory::UpdateRegistry
//
BOOL CMyAxCtrl::CMyAxCtrlFactory::UpdateRegistry(BOOL bRegister)
{
// TODO: Verify that your control follows apartment-model threading rules.
// Refer to MFC TechNote 64 for more information.
// If your control does not conform to the apartment-model rules, then
// you must modify the code below, changing the 6th parameter from
// afxRegInsertable | afxRegApartmentThreading to afxRegInsertable.
if (bRegister)
return AfxOleRegisterControlClass(
AfxGetInstanceHandle(),
m_clsid,
m_lpszProgID,
IDS_NVC_MFCAXCTL,
IDB_NVC_MFCAXCTL,
afxRegInsertable | afxRegApartmentThreading,
_dwMyOleMisc,
_tlid,
_wVerMajor,
_wVerMinor);
else
return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}
在上述範例會示範如何AfxOleRegisterControlClass以呼叫的旗標可以插入與待處理公寓模型 ORed 在一起,以建立第六個參數:
afxRegInsertable | afxRegApartmentThreading,
控制項將會出現在 [插入物件] 對話方塊中啟用狀態的容器,而且它會公寓模型感知。 公寓模型感知的控制項,讓一個 apartment 中的控制項存取靜態資料時,雖然它不排程器之前,停用的步驟,並使用相同的靜態資料的相同類別的另一個執行個體啟動,必須確定該以鎖定,保護資料的靜態類別。 靜態資料存取事件將會環繞關鍵區段的程式碼。
需求
標頭: <afxctl.h>
請參閱
參考
AfxOleRegisterPropertyPageClass