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
    コントロールのユーザー読み取り可能な型名を含む文字列のリソース id。

  • idBitmap
    ツールバーやパレットの OLE コントロールを表すために使用されるビットマップのリソース id。

  • nRegFlags
    次のフラグの一つ以上が含まれています:

    • afxRegInsertable は、コントロールが OLE オブジェクトの挿入オブジェクトのダイアログ ボックスに表示されるようにします。

    • afxRegApartmentThreading は ThreadingModel=Apartment にレジストリのスレッド モデルを設定します。

    • afxRegFreeThreading は ThreadingModel=Free にレジストリのスレッド モデルを設定します。

      ThreadingModel=Both を設定するには、 2 とおりのフラグ afxRegApartmentThreadingafxRegFreeThreading を組み合わせることができます。スレッド モデルの登録の詳細については Windows SDK の InprocServer32 を参照してください。

    [!メモ]

    MFC 4.2 以前のバージョンでは、 MFC intnRegFlags パラメーターは bInsertable挿入オブジェクトのダイアログ ボックスから挿入されるコントロールを有効にするか、または却下した BOOL パラメーターです。

  • dwMiscStatus
    次の状態フラグの一つ以上が含まれます (フラグの詳細については、 Windows SDKの OLEMISC の列挙を参照):

    • 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
    コントロール クラスの一意の ID。

  • wVerMajor
    コントロール クラスのメジャー バージョン番号。

  • wVerMinor
    コントロール クラスのマイナー バージョン番号。

戻り値

コントロール クラスが登録されている場合はゼロ。; それ以外の場合は 0。

解説

これは、コントロールがわかっている OLE コントロールであるコンテナーで使用できるようにします。AfxOleRegisterControlClass は、コントロールの名前とシステムのレジストリの場所を更新し、コントロールがレジストリでサポートするスレッド モデルを設定します。詳細については、 OLE コントロールの テクニカル ノート 64、 「アパートメントモデル スレッド」、および 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);
}

6 番目のパラメーターを作成するに AfxOleRegisterControlClass が insertable のフラグのアパートメント モデル ORed のフラグと一緒に呼び出されるか上の例で示されています:

            afxRegInsertable | afxRegApartmentThreading,

コントロールは有効なコンテナーに対してオブジェクトの挿入] ダイアログ ボックスに表示し、モデルを認識するアパートメントです。アパートメント モデルに対応するコントロールは終了し、同じクラスの別のインスタンスは、静的データを使用して開始前に 1 個のアパートメントのコントロールが静的データにアクセスしているとき、スケジューラによって無効にされていないとして静的クラスのデータがロックによって保護されていることを確認する必要があります。静的データに対するアクセスがクリティカル セクション コードで囲まれます。

必要条件

Header: <afxctl.h>

参照

関連項目

AfxOleRegisterPropertyPageClass

AfxOleRegisterTypeLib

AfxOleUnregisterClass

AfxOleUnregisterTypeLib

概念

MFC マクロとグローバル