โครงสร้างของDRAWITEMSTRUCTมีแบบฟอร์มต่อไปนี้:
typedef struct tagDRAWITEMSTRUCT {
nbsp UINT CtlType
UINT CtlID
UINT itemID
UINT itemAction
UINT itemState
HWND hwndItem
HDC hDC
RECT rcItem
DWORD itemData
} DRAWITEMSTRUCT(&N)
DRAWITEMSTRUCTโครงสร้างแสดงหน้าต่างของเจ้าของข้อมูลต้องมีวิธีการระบายสีการวาดเจ้าของตัวควบคุมหรือรายการเมนู หน้าต่างเจ้าของวาดเจ้าของตัวควบคุมหรือรายการเมนูได้รับตัวชี้ไปยังโครงสร้างนี้เป็นพารามิเตอร์lParamของข้อความWM_DRAWITEM?
สมาชิก
CtlType
ชนิดของตัวควบคุม ค่าของตัวควบคุมชนิดมีดังนี้:
CtlID
หมายเลขตัวควบคุมสำหรับกล่องคำสั่งผสม กล่องรายการ หรือปุ่ม สมาชิกนี้ไม่ได้ถูกใช้สำหรับเมนู?
itemID
ID รายการเมนูสำหรับเมนูหรือดัชนีของรายการในกล่องรายการหรือกล่องคำสั่งผสม สำหรับกล่องรายการที่ว่างเปล่าหรือกล่องคำสั่งผสม สมาชิกนี้จะเป็นค่าลบ ซึ่งช่วยให้แอพลิเคชันเมื่อต้องการวาดสี่เหลี่ยมโฟกัสเฉพาะที่ที่พิกัดที่ระบุ โดยสมาชิกrcItemแม้ว่าจะไม่มีรายการในตัวควบคุม ผู้ใช้จึงสามารถแสดงว่า กล่องรายการหรือกล่องคำสั่งผสมมีโฟกัสป้อนข้อมูล การตั้งค่าของบิตที่ในสมาชิกitemActionเป็นตัวกำหนดว่า สี่เหลี่ยมจะวาดเหมือนกับกล่องรายการหรือกล่องคำสั่งผสมที่มีการป้อนข้อมูลโฟกัส?
itemAction
กำหนดจำเป็นต้องดำเนินการวาด จะเป็นบิตต่อไปนี้อย่างน้อยหนึ่งอย่าง:
itemState
ระบุสถานะภาพของสินค้าหลังจากดำเนินการวาดรูปปัจจุบันเกิดขึ้น กล่าวคือ ถ้ารายการเมนู มีสีจะจาง ธงรัฐจะถูกตั้งค่าODS_GRAYED ค่าสถานะรัฐมีดังนี้:
hwndItem
ระบุหมายเลขอ้างอิงหน้าต่างของตัวควบคุมสำหรับกล่องคำสั่งผสม กล่องรายการ และปุ่ม ระบุหมายเลขอ้างอิงของเมนู (HMENU) ที่ประกอบด้วยรายการสำหรับเมนู?
hDC
บริบทอุปกรณ์ระบุ บริบทนี้อุปกรณ์ที่ต้องใช้เมื่อทำการดำเนินการวาดรูปบนตัวควบคุม?
rcItem
ในบริบทของอุปกรณ์ที่ระบุ โดยสมาชิกhDCที่กำหนดขอบเขตของตัวควบคุมเพื่อวาด สี่เหลี่ยม Windows โดยอัตโนมัติคลิปอะไรเจ้าวาดในบริบทอุปกรณ์สำหรับกล่องคำสั่งผสม กล่องรายการ และปุ่ม แต่มันไม่คลิปรายการเมนู เมื่อวาดเมนูสินค้า เจ้าของต้องวาดเป็นภายนอกขอบเขตของสี่เหลี่ยมที่กำหนด โดยสมาชิกrcItem?
itemData
สำหรับกล่องคำสั่งผสมหรือกล่องรายการ สมาชิกนี้ประกอบด้วยค่าที่ถูกส่งผ่านไปยังกล่องรายการตามอย่างใดอย่างหนึ่งต่อไปนี้:
สำหรับเมนู สมาชิกนี้ประกอบด้วยค่าที่ถูกส่งผ่านไปยังเมนูตามอย่างใดอย่างหนึ่งต่อไปนี้:
ดูเพิ่มเติมnbspCWnd::OnDrawItem(&N)