ฟังก์ชันSetWindowPosเปลี่ยนขนาด ตำแหน่ง และ Z ลำดับของหน้าต่างแบบผุดขึ้น หรือระดับบนสุดลูก เด็ก หน้าต่างแบบผุดขึ้น และระดับบนสุดจะเรียงลำดับตามลักษณะที่ปรากฏบนหน้าจอ อยู่ด้านบนสุดของหน้าต่างได้รับเอก และมีหน้าต่างแรกในลำดับ Z.
(BOOL SetWindowPos HWND hWnd, / / จัดการหน้าต่างHWNDhWndInsertAfter, / / จัดการวางใบสั่งint X, / / แนวนอนตำแหน่งint Y, / / แนวตั้งตำแหน่ง int cx, // width int cy, // heightUINTuFlags / / วางตำแหน่งหน้าต่างการตั้งค่าสถานะ);
ค่า | ความหมาย |
---|---|
HWND_BOTTOM | วางหน้าต่างที่ด้านล่างของใบ Z ถ้าพารามิเตอร์hWndระบุหน้าต่างจอม สูญเสียสถานะอยู่ด้านบนสุดของหน้าต่าง และจะอยู่ที่ด้านล่างของหน้าต่างอื่น ๆ ทั้งหมด. |
HWND_NOTOPMOST | วางหน้าต่าง windows ทั้งหมดไม่ใช่จอม (นั่นคือ เบื้องหลังทั้งหมดจอม windows) ธงชาตินี้ไม่มีผลใด ๆ ถ้าหน้าต่างแล้ว หน้าต่างไม่ใช่จอม. |
HWND_TOP | วางหน้าต่างที่ด้านบนของใบ Z. |
HWND_TOPMOST | วางหน้าต่าง windows ทั้งหมดไม่ใช่จอม หน้าต่างรักษาตำแหน่งจอมแม้ว่ามันจะถูกเรียกใช้. |
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้พารามิเตอร์นี้ ส่วนข้อสังเกตต่อไป.
ค่า | ความหมาย |
---|---|
SWP_ASYNCWINDOWPOS | ถ้าเรียกเธรดไม่เป็นเจ้าของหน้าต่าง ระบบบทความการร้องขอการเธรดที่เป็นเจ้าของหน้าต่าง การป้องกันไม่ให้เธรดการโทรจากบล็อกการดำเนินการในขณะที่หัวข้ออื่น ๆ การประมวลผลการร้องขอ. |
SWP_DEFERERASE | ป้องกันไม่ให้สร้างความ WM_SYNCPAINT. |
SWP_DRAWFRAME | วาดเฟรม (ที่กำหนดไว้ในคำอธิบายของคลาสของหน้าต่าง) รอบหน้าต่าง. |
SWP_FRAMECHANGED | ส่งข้อความ WM_NCCALCSIZE ไปยังหน้าต่าง แม้ว่าจะไม่มีการเปลี่ยนแปลงขนาดของหน้าต่าง ถ้าไม่ระบุค่าสถานะนี้ WM_NCCALCSIZE จะส่งเฉพาะเมื่อมีการเปลี่ยนแปลงขนาดของหน้าต่าง. |
SWP_HIDEWINDOW | ซ่อนหน้าต่าง. |
SWP_NOACTIVATE | เปิดใช้งานหน้าต่าง หากไม่ตั้งค่าสถานะนี้ หน้าต่างเปิดใช้งาน และย้ายไปยังด้านบนของทั้งสองอยู่ด้านบนสุด หรือ จอมไม่ใช่กลุ่ม (ขึ้นอยู่กับการตั้งค่าของพารามิเตอร์hWndInsertAfter ). |
SWP_NOCOPYBITS | ละเว้นเนื้อหาทั้งหมดของพื้นที่ที่ไคลเอ็นต์ ถ้าไม่ระบุค่าสถานะนี้ เนื้อหาถูกต้องของไคลเอ็นต์พื้นที่จะถูกบันทึก และคัดลอกกลับเข้าไปในพื้นที่ไคลเอ็นต์หลังจากหน้าต่างมีขนาด หรือ repositioned. |
SWP_NOMOVE | รักษาการตำแหน่งปัจจุบัน (ละเว้นพารามิเตอร์XและY ). |
SWP_NOOWNERZORDER | ไม่มีเปลี่ยนตำแหน่งของหน้าต่างเจ้าของตามลำดับ Z. |
SWP_NOREDRAW | ออกตั๋วใหม่การเปลี่ยนแปลง หากถูกตั้งค่าสถานะนี้ ไม่มี repainting ใด ๆ เกิดขึ้น นี้ใช้กับพื้นที่ไคลเอ็นต์ nonclient พื้นที่ (รวมถึงแถบเลื่อนและแถบชื่อเรื่อง), และส่วนใดส่วนหนึ่งของหน้าต่างหลักเปิดเผยเป็นผลของหน้าต่างที่มีการเคลื่อนย้าย เมื่อถูกตั้งค่าสถานะนี้ แอพลิเคชันต้องชัดเจนโมฆะ หรือออกตั๋วใหม่ส่วนใด ๆ ของหน้าต่างและหน้าต่างหลักที่จำเป็นต้อง redrawing. |
SWP_NOREPOSITION | เหมือนกับค่าสถานะ SWP_NOOWNERZORDER. |
SWP_NOSENDCHANGING | ป้องกันไม่ให้หน้าต่างรับข้อความ WM_WINDOWPOSCHANGING. |
SWP_NOSIZE | ขนาดปัจจุบัน (ละเว้นพารามิเตอร์cxและcy ) รักษาการ. |
SWP_NOZORDER | รักษาการ Z ใบสั่งปัจจุบัน (ละเว้นพารามิเตอร์hWndInsertAfter ). |
SWP_SHOWWINDOW | แสดงหน้าต่าง. |
ถ้าฟังก์ชันสำเร็จ ค่าส่งกลับจะไม่ใช่ศูนย์.
ถ้าฟังก์ชันล้มเหลว ส่งคืนค่าเป็นศูนย์ การขอเพิ่มเติมข้อมูลข้อผิดพลาด โทร GetLastError.
หากถูกตั้งค่าสถานะ SWP_SHOWWINDOW หรือ SWP_HIDEWINDOW หน้าต่างไม่สามารถย้าย หรือขนาด.
ถ้าคุณมีการเปลี่ยนแปลงข้อมูลหน้าต่างโดยใช้SetWindowLongคุณต้องเรียกSetWindowPosต้องมีการเปลี่ยนแปลงมีผล ใช้การรวมต่อไปนี้สำหรับuFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.
หน้าต่างสามารถทำหน้าต่างจอม โดยการตั้งค่าพารามิเตอร์hWndInsertAfter HWND_TOPMOST และการรับประกันที่ไม่ได้ตั้งค่าสถานะ SWP_NOZORDER หรือ โดยการตั้งค่าตำแหน่งของหน้าต่างในลำดับ Z ให้อยู่ข้างบน windows จอมใด ๆ ที่มีอยู่ เมื่อหน้าต่างไม่ใช่จอมทำจอม ของ windows เป็นยังมีจอม เจ้าของ อย่างไรก็ตาม จะไม่เปลี่ยนแปลง.
ถ้ามีระบุค่าสถานะทั้ง SWP_NOACTIVATE และ SWP_NOZORDER (นั่นคือ เมื่อโปรแกรมประยุกต์ที่ร้องขอว่า หน้าต่างได้พร้อมกันได้เปิดการใช้งาน และเปลี่ยนแปลงตำแหน่งของมันในลำดับ Z), ค่าที่ระบุในhWndInsertAfterจะใช้เฉพาะในสถานการณ์ต่อไปนี้:
โปรแกรมประยุกต์ไม่สามารถใช้งานหน้าต่างไม่ได้ใช้งาน โดยไม่มียัง นำไปด้านบนของใบ Z โปรแกรมประยุกต์ที่สามารถเปลี่ยนแปลงตำแหน่งของหน้าต่างเปิดใช้งานแล้วในลำดับ Z โดยไม่มีข้อจำกัด หรือจะสามารถเปิดใช้งานหน้าต่างแล้ว ย้ายไปด้านบนของหน้าต่างอยู่ด้านบนสุด หรือไม่ใช่จอม.
ถ้าหน้าต่างอยู่ด้านบนสุดคือ repositioned ไปด้านล่าง (HWND_BOTTOM) ของลำดับ Z หรือ หลังหน้าต่างใด ๆ ที่ไม่ใช่จอม ได้ไม่สูง เมื่อทำไม่ใช่จอมหน้าต่างจอม เจ้าของและของ windows เป็นยังมีจอมไม่ใช่ windows.
หน้าต่างจอมไม่สามารถเป็นเจ้าของหน้าต่างจอม แต่ตรงข้ามกันไม่สามารถเกิดขึ้น ใด ๆ หน้าต่าง (ตัวอย่างเช่น กล่องโต้ตอบ) เป็นเจ้าจอมหน้าต่างเป็นตัวทำให้หน้าต่างจอม เพื่อให้แน่ใจว่า ทั้งหมดเป็นเจ้าของ windows อยู่เหนือเจ้าของตนเอง.
ถ้าโปรแกรมประยุกต์ไม่ได้อยู่ในเบื้องหน้า และควรอยู่ในทำงานเบื้องหน้า จะต้องเรียกใช้ฟังก์ชันSetForegroundWindow.
Windows CE: ถ้านี่คือหน้าต่างระดับบนสุดสามารถมองเห็นได้ และไม่มีระบุค่าสถานะ SWP_NOACTIVATE ฟังก์ชันนี้จะเปิดใช้งานหน้าต่าง ถ้านี่คือหน้าต่างที่ใช้งานอยู่ในขณะนี้ และมีระบุค่าสถานะ SWP_NOACTIVATE หรือค่าสถานะ SWP_HIDEWINDOW การเปิดใช้งานถูกส่งผ่านไปบนหน้าต่างระดับบนสุดสามารถมองเห็นได้อีก.
เมื่อคุณตั้งค่าสถานะ SWP_FRAMECHANGED ในพารามิเตอร์nFlagsเป็นฟังก์ชันนี้ Windows CE redraws ไคลเอ็นต์ไม่ใช่พื้นที่ทั้งหมดของหน้าต่าง ซึ่งอาจมีการเปลี่ยนแปลงขนาดของพื้นที่ไคลเอ็นต์ นี้เป็นวิธีเดียวที่จะได้รับพื้นที่ไม่ได้อยู่ในไคลเอ็นต์จะคำนวณอีกครั้ง และโดยทั่วไปใช้หลังจากคุณได้เปลี่ยนแปลงลักษณะหน้าต่างได้ โดยการเรียกSetWindowLong.
SetWindowPosเสมอจะทำให้ข้อความ WM_WINDOWPOSCHANGED ให้ส่งไปหน้าต่างนั้น ค่าสถานะการส่งผ่านข้อความนี้ตรงเหมือนกันเป็นที่ส่งผ่านไปยังฟังก์ชัน ไม่มีข้อความอื่น ๆ จะถูกส่ง โดยฟังก์ชันนี้.
Windows CE 1.0 ไม่สนับสนุนค่าคง HWND_TOPMOST และ HWND_NOTOPMOST ในพารามิเตอร์hwndInsertAfter.
Windows CE 1.0 ไม่สนับสนุนค่าสถานะ SWP_DRAWFRAME หรือ SWP_NOCOPYBITS ใน paramete fuFlags.
nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ต้องการเวอร์ชัน 1.0 หรือรุ่นใหม่กว่า
หัวข้อ:ประกาศใน winuser.h
ไลบรารีที่นำเข้า:ใช้ user32.lib.
ภาพรวมของ Windowsหน้าต่างฟังก์ชัน MoveWindow, SetActiveWindow, SetForegroundWindow