次の方法で共有


CMDIChildWnd::Create

更新 : 2007 年 11 月

Windows の MDI 子ウィンドウを作成し、CMDIChildWnd オブジェクトに結び付けます。

virtual BOOL Create(
   LPCTSTR lpszClassName,
   LPCTSTR lpszWindowName,
   DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
   const RECT& rect = rectDefault,
   CMDIFrameWnd* pParentWnd = NULL,
   CCreateContext* pContext = NULL 
);

パラメータ

  • lpszClassName
    Windows クラス (WNDCLASS 構造体) 名を表す null で終わる文字列へのポインタ。クラス名として、AfxRegisterWndClass グローバル関数で登録した名前をどれでも使用できます。標準の CMDIChildWnd では NULL を指定します。

  • lpszWindowName
    ウィンドウ名を示す NULL で終わる文字列へのポインタ。タイトル バーのテキストとして使用します。

  • dwStyle
    ウィンドウのスタイル属性を指定します。WS_CHILD スタイルは必ず指定します。

  • rect
    ウィンドウのサイズと位置を保持します。rectDefault 値を使うと、Windows が新しい CMDIChildWnd のサイズと位置を決定できます。

  • pParentWnd
    親ウィンドウを指定します。NULL を指定すると、メイン アプリケーション ウィンドウが使われます。

  • pContext
    CCreateContext 構造体へのポインタ。このパラメータには、NULL を指定できます。

戻り値

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

解説

現在のアクティブな MDI 子ウィンドウは、親フレーム ウィンドウのキャプションで判断できます。子フレーム ウィンドウの FWS_ADDTOTITLE スタイル ビットをオフにすると、この機能が無効になります。

ユーザーが子ウィンドウを作成するコマンドを発行すると、フレームワークがこのメンバ関数を呼び出し、パラメータ pContext で子ウィンドウをアプリケーションに正しく結び付けます。Create 関数を呼び出すときは、pContext は NULL でもかまいません。

使用例

例 1:

// CMainFrame::OnFileNewCMdiChildWnd() is a menu command handler for the 
// CMainFrame class, which in turn is a CMDIFrameWnd-derived class.
// It shows the creation of a standard Windows MDI child window using 
// the registered CMDIChildWnd class.  
void CMainFrame::OnFileNewMdiChildWnd()
{
   CMDIChildWnd* pMDIChildWnd = new CMDIChildWnd;
   VERIFY(pMDIChildWnd->Create(
      NULL,                                        // standard CMDIChildWnd class
      _T("My MDIChildWnd"),                        // caption of MDI child window
      WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, // window styles
      rectDefault,                                 // default rectangle size
      this));                                      // parent window; can be NULL

   // the default PostNcDestroy handler will delete this object when destroyed
}

例 2:

// CMainFrame::OnHello() is a menu command handler for the CMainFrame
// class, which in turn is a CMDIFrameWnd-derived class.
// It shows the creation of a Windows MDI child window using a custom
// window class. The custom window class is registered in 
// CHelloWnd::Create(). CHelloWnd is a CMDIChildWnd-derived class.
void CMainFrame::OnHello()
{
   CHelloWnd *pHelloWnd = new CHelloWnd;
   if (!pHelloWnd->Create(_T("Hello"),
      WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
      rectDefault, this))
      return;

   // the default PostNcDestroy handler will delete this object when destroyed
}
BOOL CHelloWnd::Create(
   LPCTSTR szTitle, 
   LONG style              /* = 0 */,
   const RECT& rect        /* = rectDefault */,
   CMDIFrameWnd* parent    /* = NULL */)
{
   // Setup the shared menu
   SetHandles(::LoadMenu(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_HELLO)),
      NULL);

   // Register a custom WndClass and create a window.
   // This must be done because CHelloWnd has a custom icon.
   LPCTSTR lpszHelloClass =
      AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
      LoadCursor(NULL, IDC_ARROW),
      (HBRUSH) (COLOR_WINDOW+1),
      LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_HELLO)));

   return CMDIChildWnd::Create(lpszHelloClass, szTitle, style, rect, parent);
}

必要条件

ヘッダー : afxwin.h

参照

参照

CMDIChildWnd クラス

階層図

CMDIChildWnd::CMDIChildWnd

CWnd::PreCreateWindow

その他の技術情報

CMDIChildWnd のメンバ