เลือกแบบอักษร

หัวข้อนี้อธิบายตัวอย่างรหัสที่จะแสดงกล่องโต้ตอบแบบอักษรเพื่อให้ผู้ใช้สามารถเลือกคุณลักษณะของแบบอักษร ตัวอย่างรหัสแรก เริ่มต้นโครงสร้างแบบCHOOSEFONTและเรียกใช้ฟังก์ชันChooseFontเพื่อแสดงกล่องโต้ตอบแล้ว.

ตัวอย่างนี้ตั้งค่าสถานะ CF_SCREENFONTS เพื่อระบุว่า กล่องโต้ตอบจะแสดงแบบอักษรหน้าจอเท่านั้น มันตั้งค่าสถานะ CF_EFFECTS เพื่อแสดงตัวควบคุมที่อนุญาตให้ผู้ใช้เลือกขีดทับ ขีดเส้นใต้ และตัวเลือกสี.

ถ้าChooseFontส่งกลับค่า TRUE ที่ระบุว่า ผู้ใช้คลิกปุ่มOK , LOGFONTโครงสร้างที่ชี้ไป โดยสมาชิกlpLogFontของโครงสร้างของCHOOSEFONTประกอบด้วยข้อมูลที่อธิบายถึงแบบอักษรและแอตทริบิวต์แบบอักษรที่เลือก โดยผู้ใช้ สมาชิกrgbColorsมีสีข้อความที่เลือก ตัวอย่างรหัสใช้ข้อมูลนี้เพื่อตั้งค่าสีแบบอักษรและข้อความสำหรับบริบทอุปกรณ์เกี่ยวข้องกับเจ้าของหน้าต่าง.

HWND hwnd                / / เจ้าของหน้าต่าง
HDC hdc                  / / แสดงอุปกรณ์บริบทของเจ้าของหน้าต่าง

CHOOSEFONT cf            / / โครงสร้างกล่องโต้ตอบทั่วไป
lf LOGFONT คง        / / ทางโครงสร้างของแบบอักษร
คง DWORD rgbCurrent   / / ปัจจุบันสีข้อความ
HFONT hfont, hfontPrev
DWORD rgbPrev

/ / เตรียมใช้งาน CHOOSEFONT
ZeroMemory (แอมป์ cf, sizeof(CHOOSEFONT))
cf.lStructSize = sizeof (CHOOSEFONT);
cf.hwndOwner = hwnd
cf.lpLogFont = & lf
cf.rgbColors = rgbCurrent
cfค่าสถานะ = CF_SCREENFONTS | CF_EFFECTS

ถ้า (ChooseFont(&cf) == TRUE) {
    hfont = CreateFontIndirect(cf.lpLogFont)
    hfontPrev = SelectObject (hdc, hfont);
    rgbCurrent = cf.rgbColors
    rgbPrev = SetTextColor (hdc, rgbCurrent);
 .
 .
 .
} 

Index