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 到登錄中設定的執行緒模型 = 空閒。

      您可以結合兩個旗標afxRegApartmentThreadingafxRegFreeThreading來設定 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

AfxOleRegisterTypeLib

AfxOleUnregisterClass

AfxOleUnregisterTypeLib

概念

MFC 巨集和全域變數