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 とおりのフラグ afxRegApartmentThreading と afxRegFreeThreading を組み合わせることができます。スレッド モデルの登録の詳細については 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