Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
| Veri Akışı Adı | Açıklama |
|---|---|
| CMDIChildWnd::CMDIChildWnd | Bir CMDIChildWnd nesne oluşturur. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| 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.
LoadFrame yerine daha az bağımsız değişken Creategerektirir ve bunun yerine çerçevenin resim yazısı, 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
CMultiDocTemplatebirlikte, aynı belge şablonundaki birden çokCMDIChildWndnesne 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 tamamen yerini alır ve O anda etkin olan MDI alt penceresinin resim yazısı MDI çerçeve penceresinin resim yazısına eklenir. MDI çerçeve penceresiyle birlikte uygulanan MDI alt pencere işlevlerinin diğer örnekleri için sınıf açıklamasına
CMDIFrameWndbakı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
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.
Dönüş 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 resim yazısını 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();
Dönüş 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ı