Makale numarası: 108315 - Son Gözden Geçirme: 11 Temmuz 2005 Pazartesi - Gözden geçirme: 1.3

Nasıl yapılır: bir MDI penceresi her zaman üstte tut

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bir çoklu belge arabirim (MDI) penceresi oluştururken, diğer MDI pencerelerin üstünde kalır yeni pencerenin sahip mevcut bir stili vardır. Alternatif olarak, iki yöntem bu işlevselliği elde etmek kullanılabilir:
  • WM_WINDOWPOSCHANGED ileti işleme ve pencerenin Z-sırasını değiştirmek için SetWindowPos() arayın.
  • MDI Wındows için süreölçer'ı yükleyin ve Z-sırasını pencere WM_TIMER ileti işleme sırasında sıfırlayın.

Daha fazla bilgi

"Yeni MDI penceresine stillerle ayarlayabileceğiniz alan stilini" MDICREATESTRUCT var. Stiller, WS_EX_TOPMOST gibi genişletilmiş MDI pencerelerinde kullanılabilir değil. Bu alan, MDICREATESTRUCT CreateWindowEx() için dwStyle parametresinde geçirilir. DwExStyle alan M'YE 0 olarak ayarlanır. Iki yöntem aşağıda gösterilen aynı uygulamada aynı anda kullanılamaz.

Yöntem 1: WM_WINDOWPOSCHANGED iletisinin işlem ve pencerenin Z-sırasını değiştirmek için SetWindowPos() arayın.

Örnek kod

   LRESULT CALLBACK MdiWndProc (HWND hWnd, UINT message, WPARAM wParam,
                       LPARAM lParam)
   {
       static HWND hWndAlwaysOnTop = 0;
       switch (message)
        {
        case WM_CREATE :
            if (!hWndAlwaysOnTop)
             {
             SetWindowText (hWnd, "Always On Top Window");
             hWndAlwaysOnTop = hWnd;
             }
               break;
        case WM_WINDOWPOSCHANGED :
            if (hWndAlwaysOnTop)
             {
             WINDOWPOS FAR* pWP = (WINDOWPOS FAR*)lParam;
             if (pWP->hwnd != hWndAlwaysOnTop)
                 SetWindowPos (hWndAlwaysOnTop, HWND_TOP, 0, 0, 0, 0,
                         SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
             }
            break;
        // 
        // Other Messages to process here.
        // 
        case WM_CLOSE :
            if (hWndAlwaysOnTop == hWnd)
             hWndAlwaysOnTop = NULL;
        default :
            return DefMDIChildProc (hWnd, message, wParam, lParam);
        }
       return 0L;
   }
				
Yöntem 2: bir süreölçer MDI Wındows için Yükle ve Z-sırasını pencere WM_TIMER ileti işleme sırasında Sıfırla.

Örnek kod

   LRESULT CALLBACK MdiWndProc (HWND hWnd, UINT message, WPARAM wParam,
                       LPARAM lParam)
   {
       static HWND hWndAlwaysOnTop = 0;
       switch (message)
        {
        case WM_CREATE :
            SetTimer (hWnd, 1, 200, NULL);
            if (!hWndAlwaysOnTop)
             {
             SetWindowText (hWnd, "Always On Top Window");
             hWndAlwaysOnTop = hWnd;
             }
               break;
        case WM_TIMER :
            if (hWndAlwaysOnTop)
             {
             SetWindowPos (hWndAlwaysOnTop, HWND_TOP, 0, 0, 0, 0,
                        SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
             }
            break;
        case WM_DESTROY:
            KillTimer (hWnd, 1) ;
            break;
        // 
        // Other Messages to process here.
        // 
        case WM_CLOSE :
            if (hWndAlwaysOnTop == hWnd)
             hWndAlwaysOnTop = NULL;
        default :
            return DefMDIChildProc (hWnd, message, wParam, lParam);
        }
       return 0L;
   }
				
Z-sırasını alt açılır pencereleri değiştirme ile ilgili ek bilgi için lütfen aşağıdaki article(s) olarak Microsoft Knowledge Base'de bakın:
66943  (http://support.microsoft.com/kb/66943/EN-US/ ) Açılır pencereyi en üstte belirleme

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Platform Software Development Kit - Ocak 2000 Sürümü
  • Microsoft Windows Software Development Kit 3.1
Anahtar Kelimeler: 
kbmt kbhowto kbmdi kbwndw KB108315 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:108315  (http://support.microsoft.com/kb/108315/en-us/ )