Aracılığıyla paylaş


CMDIChildWnd Sınıfı

Windows birden çok belge arabirimi (MDI) alt penceresinin işlevselliğini ve pencereyi yönetmek için üyeleri sağlar.

Sözdizimi

class CMDIChildWnd : public CFrameWnd

Üyeler

Ortak Oluşturucular

Ad Tanım
CMDIChildWnd::CMDIChildWnd Bir CMDIChildWnd nesne oluşturur.

Genel Yöntemler

Ad Tanım
CMDIChildWnd::Create Nesneyle CMDIChildWnd ilişkilendirilmiş Windows MDI alt penceresini oluşturur.
CMDIChildWnd::GetMDIFrame MDI istemci penceresinin üst MDI çerçevesini döndürür.
CMDIChildWnd::MDIActivate Bu MDI alt penceresini etkinleştirir.
CMDIChildWnd::MDIDestroy Bu MDI alt penceresini yok eder.
CMDIChildWnd::MDIMaximize Bu MDI alt penceresini en üst düzeye çıkarır.
CMDIChildWnd::MDIRestore Bu MDI alt penceresini ekranı kaplamış veya simge durumuna küçültülmüş boyuttan geri yükler.
CMDIChildWnd::SetHandles Menü ve hızlandırıcı kaynaklarının tutamaçlarını ayarlar.

Açıklamalar

MDI alt penceresi tipik bir çerçeve penceresine çok benzer, ancak MDI alt penceresi masaüstü yerine bir MDI çerçeve penceresinde görünür. MDI alt penceresinin kendi menü çubuğu yoktur, bunun yerine MDI çerçeve penceresinin menüsünü paylaşır. Çerçeve, geçerli etkin MDI alt penceresini temsil etmek için MDI çerçeve menüsünü otomatik olarak değiştirir.

Uygulamanız için yararlı bir MDI alt penceresi oluşturmak için öğesinden CMDIChildWndbir sınıf türetin. Uygulamanıza özgü verileri depolamak için türetilmiş sınıfa üye değişkenleri ekleyin. İletiler pencereye yönlendirildiğinde ne olacağını belirtmek için türetilmiş sınıfta ileti işleyicisi üye işlevlerini ve ileti eşlemesini uygulayın.

MDI alt penceresi oluşturmanın üç yolu vardır:

  • kullanarak Createdoğrudan oluşturma.

  • kullanarak LoadFramedoğrudan oluşturma.

  • Belge şablonu aracılığıyla dolaylı olarak oluşturun.

veya LoadFrameçağrısından Create önce, C++ new işlecini kullanarak yığında çerçeve penceresi nesnesini oluşturmanız gerekir. Çağırmadan Create önce, çerçevenin simgesini ve sınıf stillerini ayarlamak için AfxRegisterWndClass genel işlevine bir pencere sınıfı kaydedebilirsiniz.

Çerçevenin Create oluşturma parametrelerini anında bağımsız değişkenler olarak geçirmek için üye işlevini kullanın.

LoadFramedeğerinden Createdaha az bağımsız değişken gerektirir ve bunun yerine çerçevenin başlık, simgesi, hızlandırıcı tablosu ve menüsü de dahil olmak üzere kaynaklardan varsayılan değerlerinin çoğunu alır. tarafından LoadFrameerişilebilir olması için tüm bu kaynakların aynı kaynak kimliğine (örneğin, IDR_MAINFRAME) sahip olması gerekir.

Bir CMDIChildWnd nesne görünümler ve belgeler içerdiğinde, bunlar doğrudan programcı tarafından değil, dolaylı olarak çerçeve tarafından oluşturulur. CDocTemplate nesnesi çerçevenin oluşturulmasını, içeren görünümlerin oluşturulmasını ve görünümlerin uygun belgeye bağlantısını düzenler. Oluşturucunun CDocTemplate parametreleri, ilgili üç sınıfın (belge, çerçeve ve görünüm) öğesini belirtir CRuntimeClass . Bir CRuntimeClass nesne, kullanıcı tarafından belirtildiğinde dinamik olarak yeni çerçeveler oluşturmak için çerçeve tarafından kullanılır (örneğin, Dosya Yeni komutu veya MDI Penceresi Yeni komutu kullanılarak).

Yukarıdaki RUNTIME_CLASS mekanizmasının düzgün çalışması için, öğesinden CMDIChildWnd türetilen bir çerçeve penceresi sınıfı DECLARE_DYNCREATE ile bildirilmelidir.

sınıfı, CMDIChildWnd varsayılan uygulamasının büyük bir kısmını öğesinden CFrameWnddevralır. Bu özelliklerin ayrıntılı listesi için lütfen CFrameWnd sınıf açıklamasına bakın. sınıfı CMDIChildWnd aşağıdaki ek özelliklere sahiptir:

  • Sınıfıyla CMultiDocTemplate birlikte, aynı belge şablonundaki birden çok CMDIChildWnd nesne aynı menüyü paylaşarak Windows sistem kaynaklarını kaydeder.

  • Şu anda etkin olan MDI alt pencere menüsü MDI çerçeve penceresinin menüsünün yerini alır ve etkin durumdaki MDI alt penceresinin başlık MDI çerçeve penceresinin başlık eklenir. MDI çerçeve penceresiyle birlikte uygulanan MDI alt pencere işlevlerinin diğer örnekleri için sınıf açıklamasına CMDIFrameWnd bakın.

Çerçeve penceresini yok etmek için C++ delete işlecini kullanmayın. Bunun yerine CWnd::DestroyWindow kullanın. CFrameWnd uygulamasıPostNcDestroy, pencere yok edildiğinde C++ nesnesini siler. Kullanıcı çerçeve penceresini kapattığında, varsayılan OnClose işleyici çağırır DestroyWindow.

hakkında CMDIChildWnddaha fazla bilgi için bkz . Çerçeve Pencereleri.

Devralma Hiyerarşisi

Cobject

Ccmdtarget

Cwnd

Cframewnd

CMDIChildWnd

Gereksinimler

Üst bilgi: afxwin.h

CMDIChildWnd::CMDIChildWnd

Nesne CMDIChildWnd oluşturmak için çağrısı yapın.

CMDIChildWnd();

Açıklamalar

Görünür pencereyi oluşturmak için çağrısı Create yapın.

Örnek

CMDIChildWnd::Create örneğine bakın.

CMDIChildWnd::Create

Bir Windows MDI alt penceresi oluşturmak ve nesneye eklemek için bu üye işlevini çağırın 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);

Parametreler

lpszClassName
Windows sınıfını (WNDCLASS yapısı) adlandıran null olarak sonlandırılan karakter dizesini gösterir. Sınıf adı, AfxRegisterWndClass genel işlevine kaydedilmiş herhangi bir ad olabilir. Standart CMDIChildWndiçin NULL olmalıdır.

lpszWindowName
Pencere adını temsil eden null olarak sonlandırılan karakter dizesini gösterir. Başlık çubuğu için metin olarak kullanılır.

Dwstyle
Pencere stili özniteliklerini belirtir. WS_CHILD stili gereklidir.

Rect
Pencerenin boyutunu ve konumunu içerir. değeri, rectDefault Windows'un yeni CMDIChildWndöğesinin boyutunu ve konumunu belirtmesine olanak tanır.

pParentWnd
Pencerenin üst öğesini belirtir. NULL ise, ana uygulama penceresi kullanılır.

Pcontext
CCreateContext yapısını belirtir. Bu parametre NULL olabilir.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Şu anda etkin olan MDI alt çerçeve penceresi, üst çerçeve penceresinin başlık belirleyebilir. Bu özellik, alt çerçeve penceresinin FWS_ADDTOTITLE stil biti kapatılarak devre dışı bırakılır.

Çerçeve, bir alt pencere oluşturmak için kullanıcı komutuna yanıt olarak bu üye işlevini çağırır ve çerçeve, alt pencereyi uygulamaya düzgün bir şekilde bağlamak için pContext parametresini kullanır. çağrısı Createyaptığınızda, pContext NULL olabilir.

Örnek 1

Bu örnek menü komut işleyicisi bir MDI alt penceresi oluşturmak için çağırır Create :

// 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
}

Örnek 2

Örnek kod, öğesinden CMDIChildWndtüretilen bir sınıfın CHelloWndyöntemini çağırırCreate:

// 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
}

Bu örnekte sınıfın Create uygulaması gösterilmektedir CHelloWnd :

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);
}

CMDIChildWnd::GetMDIFrame

MDI üst çerçevesini döndürmek için bu işlevi çağırın.

CMDIFrameWnd* GetMDIFrame();

İade Değeri

MDI üst çerçeve penceresinin işaretçisi.

Açıklamalar

Döndürülen çerçeve, öğesinden CMDIChildWnd kaldırılan iki üst öğedir ve nesnesini yöneten MDICLIENT türündeki pencerenin üst öğesidir CMDIChildWnd . Nesnenin anlık MDICLIENT üst öğesini geçici CWnd bir işaretçi olarak döndürmek CMDIChildWnd için GetParent üye işlevini çağırın.

Örnek

CMDIFrameWnd::MDISetMenu örneğine bakın.

CMDIChildWnd::MDIActivate

MDI alt penceresini MDI çerçeve penceresinden bağımsız olarak etkinleştirmek için bu üye işlevini çağırın.

void MDIActivate();

Açıklamalar

Çerçeve etkin hale geldiğinde, en son etkinleştirilen alt pencere de etkinleştirilir.

Örnek

CMDIFrameWnd::GetWindowMenuPopup örneğine bakın.

CMDIChildWnd::MDIDestroy

MDI alt penceresini yok etmek için bu üye işlevini çağır.

void MDIDestroy();

Açıklamalar

Üye işlevi çerçeve penceresinden alt pencerenin başlığını kaldırır ve alt pencereyi devre dışı bırakır.

Örnek

// CMainFrame::OnCloseWindow() is a menu command handler for
// CMainFrame class, which in turn is a CMDIFrameWnd-derived
// class. It closes and destroys the current active MDI child window.
void CMainFrame::OnCloseWindow()
{
   CMDIChildWnd *child = MDIGetActive();
   if (child)
      child->MDIDestroy();
}

CMDIChildWnd::MDIMaximize

MDI alt penceresini en üst düzeye çıkarmak için bu üye işlevini çağır.

void MDIMaximize();

Açıklamalar

Bir alt pencere ekranı kapladığında, Windows bunu yeniden boyutlandırarak istemci alanının çerçeve penceresinin istemci alanını doldurmasını sağlar. Windows, kullanıcının alt pencereyi geri yükleyebilmesi veya kapatabilmesi için alt pencerenin Denetim menüsünü çerçevenin menü çubuğuna yerleştirir ve alt pencerenin başlığını çerçeve penceresi başlığına ekler.

Örnek

// CMainFrame::OnMaximizeWindow() is a menu command handler for
// CMainFrame class, which in turn is a CMDIFrameWnd-derived
// class. It maximizes the current active MDI child window.
void CMainFrame::OnMaximizeWindow()
{
   BOOL maximized;
   CMDIChildWnd *child = MDIGetActive(&maximized);
   if (child && (!maximized))
      child->MDIMaximize(); // or MDIMaximize(child);
}

CMDIChildWnd::MDIRestore

MDI alt penceresini ekranı kaplamış veya simge durumuna küçültülmüş boyuttan geri yüklemek için bu üye işlevini çağırabilirsiniz.

void MDIRestore();

Örnek

// CMainFrame::OnRestoreWindow() is a menu command handler for
// CMainFrame class, which in turn is a CMDIFrameWnd-derived class.
// It restores the current active MDI child window from maximized
// or minimized size.
void CMainFrame::OnRestoreWindow()
{
   BOOL maximized;
   CMDIChildWnd *child = MDIGetActive(&maximized);
   if (child && (maximized || child->IsIconic()))
      child->MDIRestore(); // or MDIRestore(child);
}

CMDIChildWnd::SetHandles

Menü ve hızlandırıcı kaynaklarının tutamaçlarını ayarlar.

void SetHandles(
    HMENU hMenu,
    HACCEL hAccel);

Parametreler

Hmenu
Menü kaynağının tutamacı.

hAccel
Hızlandırıcı kaynağının tanıtıcısı.

Açıklamalar

MDI alt pencere nesnesi tarafından kullanılan menü ve hızlandırıcı kaynaklarını ayarlamak için bu işlevi çağırın.

Ayrıca bkz.

MFC Örnek MDI
MFC Örneği MDIDOCVW
MFC Örneği SNAPVW
CFrameWnd Sınıfı
Hiyerarşi Grafiği
CWnd Sınıfı
CMDIFrameWnd Sınıfı