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
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 CMDIChildWnd
bir 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
Create
doğrudan oluşturma.kullanarak
LoadFrame
doğ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 Create
gerektirir 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 LoadFrame
eriş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 CFrameWnd
devralı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 çokCMDIChildWnd
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 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
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 CMDIChildWnd
daha 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 CMDIChildWnd
iç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ı Create
yaptığı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 CMDIChildWnd
türetilen bir sınıfın CHelloWnd
yö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ı