Aracılığıyla paylaş


CWnd::SetWindowPos

z-sırası, child, açılır ve üst düzey windows boyutu ve konumunu değiştirir.

BOOL SetWindowPos(
   const CWnd* pWndInsertAfter,
   int x,
   int y,
   int cx,
   int cy,
   UINT nFlags 
);

Parametreler

  • pWndInsertAfter
    Tanımlayan CWnd Yanýtladýðýnýz nesne (daha yüksek olması) bu CWnd z-sırası nesnesi. Bu parametre için bir işaretçi olabilir bir CWnd veya bir İşaretçi için aşağıdaki değerlerden biri:

    • wndBottom z-Sırası altındaki pencereye yerleştirir. Bu, CWnd bir üstteki pencere pencereyi en üstte durumunu; kaybediyor Sistem penceresi diğer pencerelerin alt kısmında yerleştirir.

    • wndTop z-Sırası üstünde pencere yerleştirir.

    • wndTopMost pencere yüm olmayan-üstteki windows yerleştirir. Hatta etkinliği, pencerenin en üstteki nesnenin konumunu korur.

    • wndNoTopMost en üstteki dışındaki tüm pencereleri üst pencereyi yeniden konumlandırır (diğer bir deyişle, en üstteki tüm pencerelerin arkasına). Pencerenin en üstteki olmayan pencere ise bu bayrak hiçbir etkisi olmaz.

    Bu parametre kullanma ile ilgili kuralları için bu konunun "Uyarılar" bölümüne bakın.

  • x
    Pencerenin sol tarafında yeni konumunu belirtir.

  • y
    Pencerenin üst kısmındaki yeni konumunu belirtir.

  • cx
    Yeni pencerenin genişliğini belirtir.

  • cy
    Pencerenin yeni yüksekliğini belirtir.

  • nFlags
    Boyutlandırma ve konumlandırma seçenekleri belirtir. Bu parametre birleşimini Aşağıdaki bayraklardan biri olabilir:

    • swp_drawframe pencere (Pencere oluşturulduğunda tanımlanan) bir çerçeve çizer.

    • swp_framechanged gönderdiği bir WM_NCCALCSIZE ileti penceresi için pencere boyutunu değil değişse bile. Bu bayrak belirtilmezse, WM_NCCALCSIZE yalnızca pencere boyutunu değiştirilirken gönderilir.

    • SWP_HIDEWINDOW penceresini gizler.

    • SWP_NOACTIVATEPencere etkinleştirmez. Bu bayrağı ayarlanmazsa, pencere etkinleştirilir ve en üstteki veya en üstteki olmayan grubun en üstüne taşınır (ayarına bağlı olarak pWndInsertAfter parametresi).

    • SWP_NOCOPYBITS tüm istemci alanının içeriğini atar. Bu bayrak belirtilmezse, istemci alanının geçerli içeriğini kaydedilir ve pencereyi farklı boyuta sahip veya yeniden konumlandırmak sonra istemci alanına geri kopyalanır.

    • SWP_NOMOVEGeçerli konumunu korur (yoksayar x ve y parametreleri).

    • swp_noownerzorder z ekseninde sahibi pencerenin konumu değişmez.

    • swp_noredraw değişiklikleri yeniden çizmez. Bu bayrak ayarlanırsa, hiçbir her türlü yeniden çizilmesini oluşur. Bu istemci alanı (başlık ve kaydırma çubukları dahil) nonclient alan ve herhangi bir parçasını taşınan pencere belirlenen üst pencere uygulanır. Bu bayrak ayarlandığında, uygulama açıkça geçersiz kılmak veya gerekir ve yeniden çizilmesi gerektiği ana penceresinde herhangi bir parçalarını yeniden çizin.

    • SWP_NOREPOSITION aynı swp_noownerzorder.

    • SWP_NOSENDCHANGING pencere tarafından alınmasını engeller WM_WINDOWPOSCHANGING ileti.

    • SWP_NOSIZEGeçerli boyutunu korur (yoksayar cx ve cy parametreleri).

    • SWP_NOZORDERGeçerli sipariş korur (yoksayar pWndInsertAfter).

    • SWP_SHOWWINDOW penceresini görüntüler.

Dönüş Değeri

Sıfır olmayan bir değer işlevi başarılı olursa; Aksi takdirde, 0.

Notlar

Windows, ekrandaki z-sıralarına göre sıralanır; sırada diğer tüm pencerelerin üstünde z-Sırası penceresi görüntülenir.

Alt pencereler için tüm koordinatları istemci koordinatlar (ana pencerenin istemci alanının sol üst köşe göre) belirlenir. 

z-Sırası üstündeki bir pencere taşınabileceği ayarlayarak ya da pWndInsertAfter parametresi & wndTopMost ve sağlanarak SWP_NOZORDER , var olan en üstteki pencereleri olacak şekilde bayrak değil z-Sırası belirlemek veya bir pencere ayarlayarak. En üstteki olmayan pencere en üstteki yapıldığında, sahip olunan windows da en üstteki yapılır. Kendi sahiplerinin değiştirilmez.

En üstteki pencere artık altına yeniden konumlandırmak, en üstteki (& wndBottom), z-sırası ve sonrasında en üstteki olmayan herhangi bir pencere. En üstteki pencereyi en üstte olmayan yapıldığında, tüm kendi sahiplerinin ve sahip olunan kendi windows en üstteki olmayan windows da yapılır.

İkisi de, SWP_NOACTIVATE , ne de SWP_NOZORDER (diğer bir deyişle, uygulama bir pencere aynı anda etkinleştirilmiş ve belirtilen z-sırada yerleştirilmiş olduğunu istediğinde) belirtilirse, belirtilen değeri pWndInsertAfter yalnızca aşağıdaki durumlarda kullanılır:

  • Ne & wndTopMost , ne de & wndNoTopMost belirtilen pWndInsertAfter parametresi.

  • Bu pencereyi etkin pencere değil.

Bir uygulama, etkin olmayan pencere de z-Sırası üste getirmeden etkinleştiremezsiniz. Uygulamalar, kısıtlama olmadan etkin bir pencereyi z sırasını değiştirebilirsiniz.

En üstteki olmayan pencere bir üstteki pencere sahip, ancak bunun tersi işlem gerçekleşmez. En üstteki pencere tarafından sahip olunan herhangi bir (örneğin, bir iletişim kutusu) kendisine ait tüm windows bunların sahibi kalmasını sağlamak için en üstteki pencere yapılan penceredir.

Windows 3.1 ve daha sonraki sürümleri windows, z-Sırası en üstüne taşınır ve orada ayarlayarak kilitli kendi ws_ex_topmost stilleri. En üstteki bir pencere bile, en üstteki nesnenin konumunu korur. Örneğin, WinHelp her zaman üstte komutunu seçerek Yardım penceresi en üstte ve bunu yapar sonra uygulamanıza döndüğünüzde görünür kalır.

En üstteki pencere oluşturmak için arama SetWindowPos ile pWndInsertAfter parametre değerine eşit & wndTopMost, veya ws_ex_topmost stil penceresi oluşturduğunuzda.

z-sırası ile herhangi bir windows içeriyorsa, ws_ex_topmost stili, bir pencere ile taşınan & wndTopMost en üstteki dışındaki tüm pencereleri, ancak herhangi bir üstteki windows altında üst değeri yerleştirilir. Ne zaman bir uygulamayı etkinleştirir bir etkin olmayan pencere olmadan ws_ex_topmost bit, pencerenin en üstteki dışındaki tüm pencereleri yukarıda ancak herhangi bir üstteki windows altında taşınır.

SetWindowPos Ne zaman adlı pWndInsertAfter parametresi & wndBottom ve CWnd bir üstteki pencere pencereyi en üstte durumunu kaybeder (ws_ex_topmost temizlenir), ve sistem penceresinde z-Sırası alt kısmında yerleştirir.

Örnek

void CMyApp::OnHideApplication()
{
   //m_pMainWnd is the main application window, a member of CMyApp
   ASSERT_VALID(m_pMainWnd);

   // hide the application's windows before closing all the documents
   m_pMainWnd->ShowWindow(SW_HIDE);
   m_pMainWnd->ShowOwnedPopups(FALSE);

   // put the window at the bottom of z-order, so it isn't activated
   m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
      SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}

Gereksinimler

Başlık: afxwin.h

Ayrıca bkz.

Başvuru

CWnd Sınıfı

Hiyerarşi grafik

DeferWindowPos

SetWindowPos