DeferWindowPos

ฟังก์ชันDeferWindowPosการปรับปรุงระบุหลายหน้าต่าง – โครงสร้างตำแหน่งหน้าต่างที่ระบุ ฟังก์ชันจะส่งกลับหมายเลขอ้างอิงการการปรับปรุงโครงสร้างแล้ว ฟังก์ชันEndDeferWindowPosใช้ข้อมูลในโครงสร้างนี้เพื่อเปลี่ยนตำแหน่งและขนาดของ windows พร้อมกัน ฟังก์ชันBeginDeferWindowPosสร้างโครงสร้าง.

(HDWP DeferWindowPos HDWP  hWinPosInfo, / / จัดการโครงสร้างภายในHWNDhWnd, / / จัดการหน้าต่างเพื่อวางตำแหน่งHWNDhWndInsertAfter, / / จัดการวางใบสั่งint x, / / แนวนอนตำแหน่ง int y, / / แนวตั้งตำแหน่ง int cx, // width int cy, // heightUINTuFlags / / วางตำแหน่งหน้าต่างการตั้งค่าสถานะ);
 

พารามิเตอร์

hWinPosInfo
จัดการการหลายหน้าต่าง – โครงสร้างตำแหน่งที่ประกอบด้วยข้อมูลขนาดและตำแหน่งสำหรับ windows อย่าง น้อยหนึ่ง โครงสร้างนี้จะถูกส่งกลับโดยBeginDeferWindowPosหรือโทรล่าสุดไปยังDeferWindowPos.
hWnd
จัดการไปยังหน้าต่างสำหรับการปรับปรุงที่ข้อมูลถูกเก็บไว้ในโครงสร้าง.
hWndInsertAfter
จัดการไปยังหน้าต่างที่อยู่ข้างหน้าหน้าต่างที่ถูกวางตำแหน่งไว้ในลำดับ Z พารามิเตอร์นี้ต้องเป็นตัวจัดการหน้าต่างหรือหนึ่งในค่าต่อไปนี้:
ค่า ความหมาย
HWND_BOTTOM วางหน้าต่างที่ด้านล่างของใบ Z ถ้าพารามิเตอร์hWndระบุหน้าต่างจอม สูญเสียสถานะอยู่ด้านบนสุดของหน้าต่าง และจะอยู่ที่ด้านล่างของหน้าต่างอื่น ๆ ทั้งหมด.
HWND_NOTOPMOST วางหน้าต่าง windows ทั้งหมดไม่ใช่จอม (นั่นคือ เบื้องหลังทั้งหมดจอม windows) ธงชาตินี้ไม่มีผลใด ๆ ถ้าหน้าต่างแล้ว หน้าต่างไม่ใช่จอม.
HWND_TOP วางหน้าต่างที่ด้านบนของใบ Z.
HWND_TOPMOST วางหน้าต่าง windows ทั้งหมดไม่ใช่จอม หน้าต่างรักษาตำแหน่งจอมแม้ว่ามันจะถูกเรียกใช้.

พารามิเตอร์นี้จะถูกละเว้นถ้าค่าสถานะ SWP_NOZORDER ถูกตั้งค่าในพารามิเตอร์uFlags.

x
ระบุพิกัด x ที่ของมุมบนซ้ายของหน้าต่าง.
y
ระบุพิกัด y ที่ของมุมบนซ้ายของหน้าต่าง.
cx
ระบุความกว้างของหน้าต่างใหม่ พิกเซล.
cy
ระบุความสูงของหน้าต่างใหม่ พิกเซล.
uFlags
ระบุการรวมกันของค่าต่อไปนี้ที่มีผลต่อขนาดและตำแหน่งของหน้าต่าง:
ค่า ความหมาย
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 แสดงหน้าต่าง.

ส่งกลับค่า

ค่าส่งกลับระบุการปรับปรุงล่าสุดหลายหน้าต่าง – โครงสร้างตำแหน่ง หมายเลขอ้างอิงที่ส่งกลับ โดยฟังก์ชันนี้อาจแตกต่างจากหมายเลขอ้างอิงที่ส่งผ่านไปยังฟังก์ชัน หมายเลขอ้างอิงใหม่ที่ส่งกลับของฟังก์ชันนี้ควรถูกส่งผ่านในระหว่างการโทรถัดไปยังฟังก์ชันDeferWindowPosหรือEndDeferWindowPos.

ถ้าทรัพยากรระบบไม่เพียงพอจะพร้อมใช้งานสำหรับฟังก์ชันประสบความสำเร็จ ส่งคืนค่าเป็น NULL การขอเพิ่มเติมข้อมูลข้อผิดพลาด โทร GetLastError.

หมายเหตุ

ถ้าการเรียกไปยังDeferWindowPosล้มเหลว แอพลิเคชันควรละทิ้งการดำเนินการวางตำแหน่งของหน้าต่าง และไม่โทรEndDeferWindowPos.

ถ้า SWP_NOZORDER ไม่มีระบุ ระบบวางหน้าต่างที่ถูกระบุ ด้วยพารามิเตอร์hWndในตำแหน่งต่อไปนี้ระบุพารามิเตอร์hWndInsertAfterหน้าต่าง ถ้าhWndInsertAfterเป็น NULL หรือ HWND_TOP ระบบวางhWndหน้าต่างที่ด้านบนของใบ Z ถ้ามีการตั้งค่าhWndInsertAfterเป็น HWND_BOTTOM ระบบวางhWndหน้าต่างที่ด้านล่างของใบ Z.

พิกัดทั้งหมดสำหรับ windows ที่เด็กจะสัมพันธ์กับมุมบนซ้ายของพื้นที่ที่ไคลเอ็นต์ของหน้าต่างหลัก.

หน้าต่างสามารถทำหน้าต่างจอม โดยการตั้งค่าhWndInsertAfterเพื่อตั้งค่าสถานะ HWND_TOPMOST และการรับประกันที่ไม่ได้ตั้งค่าสถานะ SWP_NOZORDER หรือ โดยการตั้งค่าตำแหน่งของหน้าต่างในลำดับ Z ให้อยู่ข้างบน windows จอมใด ๆ ที่มีอยู่ เมื่อหน้าต่างไม่ใช่จอมทำจอม ของ windows เป็นยังมีจอม เจ้าของ อย่างไรก็ตาม จะไม่เปลี่ยนแปลง.

ถ้ามีระบุค่าสถานะทั้ง SWP_NOACTIVATE และ SWP_NOZORDER (นั่นคือ เมื่อโปรแกรมประยุกต์ที่ร้องขอว่า หน้าต่างได้พร้อมกันได้เปิดการใช้งาน และเปลี่ยนแปลงตำแหน่งของมันในลำดับ Z), ค่าที่ระบุในhWndInsertAfterจะใช้เฉพาะในสถานการณ์ต่อไปนี้:

โปรแกรมประยุกต์ไม่สามารถใช้งานหน้าต่างไม่ได้ใช้งาน โดยไม่มียัง นำไปด้านบนของใบ Z แอปพลิเคชันสามารถเปลี่ยนตำแหน่งของหน้าต่างเปิดใช้งานแล้วในลำดับ Z โดยไม่มีข้อจำกัด หรือจะสามารถเปิดใช้งานหน้าต่างแล้ว ย้ายไปด้านบนของหน้าต่างอยู่ด้านบนสุด หรือไม่ใช่จอม.

หน้าต่างจอมจะไม่สูงถ้ามันเป็น repositioned ไปด้านล่าง (HWND_BOTTOM) ของลำดับ Z หรือ หลังหน้าต่างใด ๆ ที่ไม่ใช่จอม เมื่อทำไม่ใช่จอมหน้าต่างจอม เจ้าของและของ windows เป็นยังมีจอมไม่ใช่ windows.

หน้าต่างไม่ใช่จอมอาจเป็นเจ้าของหน้าต่างจอม แต่กลับกันไม่ได้ จะมีหน้าต่าง (ตัวอย่างเช่น กล่องโต้ตอบ) เป็นเจ้าจอมหน้าต่างเองทำหน้าต่างเพื่อให้แน่ใจว่า ทั้งหมดเป็นเจ้าของ windows ที่อยู่ข้างบนของเจ้าจอม.

QuickInfo

nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ไม่สนับสนุน
หัวข้อ:ประกาศใน winuser.h
ไลบรารีที่นำเข้า:ใช้ user32.lib.

ดูเพิ่มเติม

ภาพรวมของ Windowsหน้าต่างฟังก์ชัน BeginDeferWindowPos, EndDeferWindowPos, ShowWindow

Index