ยังจำเป็นต้องมีการบัฟเฟอร์สองเท่าเมื่อเปิดใช้งานองค์ประกอบเดสก์ท็อปหรือไม่
ในคู่มือความเข้ากันได้ของแอปพลิเคชันของ Microsoft:
อินเทอร์เฟซอุปกรณ์กราฟิก (GDI)
ก่อน Windows Vista และ Windows Server 2008 ตัวจัดการหน้าต่าง (HWND) ได้รับการทาสีลงบนหน้าจอโดยตรง ซึ่งมีประโยชน์บางประการ แต่จำกัดวิธีที่ Windows สามารถแสดงและจัดการหน้าต่างระดับบนสุดได้ ใน Windows Vista และ Windows Server 2008 หน้าต่างระดับบนสุดทั้งหมดจะแสดงผลเป็นบิตแมปนอกหน้าจอ (คล้ายกับ WS_EX_LAYERED) และ Desktop Window Manager จะรวมรูปภาพเข้าด้วยกันเพื่อวาดภาพเดสก์ท็อป
ดูเหมือนว่าตอนนี้การเรนเดอร์ทั้งหมดเสร็จสิ้นแล้วกับบิตแมปนอกหน้าจอ:
windows ถูกเรนเดอร์เป็นบิตแมปนอกหน้าจอ
สิ่งนี้ถูกต้องหรือไม่?
เหตุผลที่ฉันถามเพราะฉันยังคงเห็นการกะพริบระหว่างรอบการทาสีมาตรฐาน:
- WM_ERASEBKGND
- WM_PAINT
ในขณะที่เปิดใช้งานองค์ประกอบเดสก์ท็อป:
ฉันจะสันนิษฐานว่าระหว่างการโทรไปที่
BeginPaint(hWnd, paintStructure);
...
EndPaint(hWnd, paintStructure);
การทาสีทั้งหมดจะเกิดขึ้นกับบัฟเฟอร์ด้านหลัง:
windows ถูกเรนเดอร์เป็นบิตแมปนอกหน้าจอ
ในขณะเดียวกันบัฟเฟอร์ด้านหน้าก็จะไม่ได้รับผลกระทบ