Alt pencere oluşturma

Bir MDI alt penceresi oluşturmak için bir uygulama CreateMDIWindow işlevini çağırın veya MDI istemci penceresi için bir WM_MDICREATE iletisi gönderin. (Uygulama CreateWindowEx işlevi WS_EX_MDICHILD stili ile MDI alt pencereleri oluşturmak için kullanabilirsiniz.) Bir tek iş parçacıklı MDI uygulaması ya da yöntemi alt pencere oluşturmak için kullanabilirsiniz. Çok iş parçacıklı bir MDI uygulamasını bir thread bir alt pencereyi farklı bir iş parçacığı oluşturmak için CreateMDIWindow ya da CreateWindowEx işlevini kullanmalısınız.

WM_MDICREATE iletisinin lParam parametresinin MDICREATESTRUCT yapısı kadar bir işaretçidir. Yapı dört boyut üyeleri içerir: x ve yyatay ve dikey konumları penceresinde ve cx ve cy, penceresinin yatay ve düşey kapsamlarını gösteren göstermek. Bu üyelerin herhangi bir uygulama tarafından açıkça atanmış olabilir ya da üste, hangi durumda sistemin bir konumu, boyutu veya iki basamaklı bir algoritma göre seçer için ayarlanabilir. Her durumda, tüm dört üye başlatılmalıdır. Multipad üste tüm boyutlarını kullanır.

MDICREATESTRUCT yapısı son üyesi pencere stili bitlerini içeren Stil üyesidir. Pencere biçemleri herhangi bir kombinasyonu olabilir bir MDI alt penceresi oluşturmak için MDIS_ALLCHILDSTYLES pencere stilini belirtin. Bir MDI alt penceresi WS_MINIMIZE, WS_MAXIMIZE, ws_hscroll ve ws_vscroll stilleri, bu tarz belirtildiğinde, varsayılan ayarlar olarak vardır.

Multipad MDI alt windows (MPFILE kaynak dosyada yer. Yerel olarak tanımlanmış AddFile işlevini kullanarak oluştururc). AddFile işlevi ayarlar alt pencere başlığını pencerenin MDICREATESTRUCT yapısı szTitle üyesi ya da ad düzenlenmekte dosyanın veya "İsimsiz." atama tarafından SzClass üye Multipad'ın InitializeApplication işlevinde kayıtlı MDI alt penceresi sınıfı adına ayarlanır. HOwner üye uygulamanın örneği tanıtıcısını ayarlama.

Aşağıdaki örnek, Multipad içinde AddFile işlevini gösterir.

Hwnd &APIENTRY AddFile(pName) char * SağlayıcıAdı; 
{hwnd hwnd; 
    char sz [160]; 
    MDICREATESTRUCT mcs; 
 
    Eğer (! SağlayıcıAdı) {/ / SağlayıcıAdı parametre null ise, "İsimsiz" yük / / dize STRINGTABLE kaynak ve szTitle ayarla / / MDICREATESTRUCT üyesi. 
 
        LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); 
        MCS.szTitle (lpctstr) sz; = 
    } başka / / tam yolu ve dosya adı, pencere başlık / / OpenFile işlevini çağırarak elde / / of_parse bayrak, AddFile() önce denir. 
 
        MCS.szTitle = of.szPathName; 
 
    MCS.szClass = szChild; 
    MCS.hOwner = hInst; 
 
    / / Çocuk penceresinde varsayılan boyutu kullanın. 
 
    MCS.x = mcs.cx = üste; 
    MCS.y = mcs.cy = üste; 
 
    / / Alt pencere varsayılan stil verin. ««««StyleDefault / / değişkeni MULTIPAD tanımlanır.c. mcs.style = styleDefault; 
 
    / / MDI İstemcisi penceresinin alt pencere oluşturmak için söyle. 
 
    hwnd = (hwnd) SendMessage (hwndMDIClient, WM_MDICREATE, 0, (uzun) (LPMDICREATESTRUCT) amp; mcs); 
 
    / / Dosya bulunursa, çocuğun içeriğini okuma / / pencerenin istemci alanı. 
 
    Eğer (SağlayıcıAdı) {if (!LoadFile (hwnd, SağlayıcıAdı)) {/ / can't dosyasını yüklemek; pencereyi kapatın. 
 
            SendMessage (hwndMDIClient, WM_MDIDESTROY, (dword) hwnd, 0 l); 
        }} return hwnd; 
} 

 

WM_MDICREATE iletisinin lParam parametresinde geçirilen işaretçi Cw_usedefault işleve aktarılan ve createstruct yapısında wm_create mesaj geçti ilk üye olarak görünür. Multipad içinde alt pencere kendisi wm_create ileti ilave verilerini belge değişkenlerini başlatma ve düzenleme denetimin alt pencere oluşturma tarafından işleme sırasında başlatır.

Index