次の方法で共有


CWnd::CreateControl

更新 : 2007 年 11 月

MFC プログラム内で CWnd オブジェクトによって表現される ActiveX コントロールを作成するために使用します。

BOOL CreateControl(
   LPCTSTR pszClass,
   LPCTSTR pszWindowName,
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID,
   CFile* pPersist = NULL,
   BOOL bStorage = FALSE,
   BSTR bstrLicKey = NULL 
);
BOOL CreateControl(
   REFCLSID clsid,
   LPCTSTR pszWindowName,
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID,
   CFile* pPersist = NULL,
   BOOL bStorage = FALSE,
   BSTR bstrLicKey = NULL 
);
BOOL CreateControl(
   REFCLSID clsid,
   LPCTSTR pszWindowName,
   DWORD dwStyle,
   const POINT* ppt,
   const SIZE* psize,
   CWnd* pParentWnd,
   UINT nID,
   CFile* pPersist = NULL,
   BOOL bStorage = FALSE,
    BSTR bstrLicKey = NULL
);

パラメータ

  • pszClass
    この文字列には、クラスの OLE の "短い名前" (ProgID)、たとえば "CIRC3.Circ3Ctrl.1" が入ります。名前はコントロールによって登録された名前と完全に一致する必要があります。これとは別に、文字列の中に CLSID の文字列を含む場合があり、これは "{9DBAFCCF-592F-101B-85CE-00608CEC297B}" のようにかっこ内に入ります。どちらの場合でも、CreateControl は文字列を対応するクラス ID に変換します。

  • pszWindowName
    コントロールに表示される文字列へのポインタ。コントロールの Caption プロパティや Text プロパティの値を設定します。NULL の場合、コントロールの Caption プロパティや Text プロパティは変更されません。

  • dwStyle
    ウィンドウ スタイルを指定します。指定できるスタイルについては、「解説」を参照してください。

  • rect
    コントロールのサイズと位置を指定します。CRect オブジェクトまたは RECT 構造体のいずれかを指定します。

  • ppt
    コントロールの左上隅の点を格納する POINT 構造体または CPoint オブジェクトへのポインタ。

  • pSize
    コントロールのサイズを格納する SIZE 構造体または CSize オブジェクトへのポインタ。

  • pParentWnd
    コントロールの親ウィンドウを指定します。NULL は指定できません。

  • nID
    コントロールの ID を指定します。

  • pPersist
    コントロールの情報を保存する CFile へのポインタ。既定値は NULL で、コントロールが、永久的な任意の記憶装置から状態を取り出さないで初期化を行うことを示します。NULL ではない場合、コントロールの継続的なデータをストリームまたはストレージのどちらかの形式で持っている CFile の派生オブジェクトへのポインタである必要があります。このデータは、クライアントの以前の操作により保存されていたものでもかまいません。CFile には別のデータも入ります。CreateControl を呼び出したときには、ポインタは永続的なデータの最初のバイトを指している必要があります。

  • bStorage
    pPersist で指定したデータが IStorage または IStream のいずれのデータであるかを示します。pPersist のデータがストレージの場合、bStorage は TRUE にします。pPersist のデータがストリームの場合、bStorage は FALSE にします。既定値は FALSE です。

  • bstrLicKey
    ライセンス キー データ (省略可能)。このデータは、実行時のライセンス キーを要求するコントロールを作成するときだけに必要です。コントロールがライセンスをサポートする場合、コントロールの作成を成功させるためにライセンス キーを提供する必要があります。既定値は NULL です。

  • clsid
    コントロールごとに固有のクラス ID。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

CreateControlCWnd のウィンドウを作成する CWnd::Create 関数と類似しています。CreateControl は、通常のウィンドウの代わりに ActiveX コントロールを作成します。

CreateControl で使用できるのは Windows の dwStyle フラグのサブセットだけです。

  • WS_VISIBLE   初期状態で表示されるウィンドウを作成します。通常のウィンドウのように、コントロールがすぐに表示されるようにする場合に必要です。

  • WS_DISABLED   初期状態で無効になっているウィンドウを作成します。非表示のウィンドウは、ユーザーからの入力を受け取ることができません。コントロールが Enabled プロパティを持つ場合にだけ設定できます。

  • WS_BORDER   細い境界線を持つウィンドウを作成します。コントロールが BorderStyle プロパティを持つ場合にだけ設定できます。

  • WS_GROUP   グループを形成するコントロールの中の先頭のコントロールであることを指定します。グループ内のコントロールから次のコントロールへのキーボード フォーカスの移動は方向キーを使って行います。最初のコントロールを作成した後に WS_GROUP スタイルで定義されるコントロールはすべて、同じグループになります。WS_GROUP スタイルを持つコントロールを作成すると、それが前のグループの設定を終了させ、次のグループの設定を開始します。

  • WS_TABSTOP   Tab キーが押されたときにキーボード フォーカスを受け取ることができるコントロールであることを指定します。Tab キーを押すことでキーボード フォーカスが次の WS_TABSTOP スタイルを持つコントロールに移動します。

使用例

class CGenocx : public CWnd
{
protected:
   DECLARE_DYNCREATE(CGenocx)
public:
   CLSID const& GetClsid()
   {
      static CLSID const clsid
         = { 0x20DD1B9E, 0x87C4, 0x11D1, { 0x8B, 0xE3, 0x0, 0x0, 0xF8, 0x75, 0x4D, 0xA1 } };
      return clsid;
   }

   // This code is generated by the Control Wizard.
   // It wraps the call to CreateControl in the call to Create.
   virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
                  const RECT& rect, CWnd* pParentWnd, UINT nID, 
                  CCreateContext* pContext = NULL)
   { 
      UNREFERENCED_PARAMETER(pContext);
      UNREFERENCED_PARAMETER(lpszClassName);

      return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); 
   }

   // remainder of class declaration omitted...

必要条件

ヘッダー : afxwin.h

参照

概念

MFC ActiveX コントロール

参照

CWnd クラス

階層図

その他の技術情報

CWnd のメンバ