2010-04-23 4 views
6

Tôi muốn tạo một hộp kết hợp với tất cả các phông chữ được cài đặt của máy tính được liệt kê trong đó. Tôi không chắc làm thế nào điều này được thực hiện. Tôi có cần phải truy cập vào sổ đăng ký để có được điều này? Cảm ơnLấy danh sách phông chữ (Win32)

+0

Giải pháp tuyệt vời trong C# tại đây: http://stackoverflow.com/questions/3486546/enumerating-active-fonts-in-c-sharp-using-dll-call-to-enumfontfamiliesex-has-me – user20493

Trả lời

8

Bạn nên sử dụng chức năng API Win32 EnumFontFamiliesEx. Bạn gọi hàm đó, chuyển hàm gọi lại khớp với loại EnumFontFamExProc. Hàm gọi lại được gọi một lần cho mỗi phông chữ được tìm thấy bởi EnumFontFamiliesEx.

Tôi khuyên bạn nên sử dụng phiên bản unicode (EnumFontFamiliesExW), vì tôi đã thấy phiên bản ascii (EnumFontFamiliesExA) hiển thị một số hành vi rất kỳ lạ đối với phông chữ ngôn ngữ Đông Á.

Các bài viết được liên kết có mã ví dụ.

4

Cách winapi thực hiện việc này là sử dụng chức năng EnumFontFamiliesEx. Bạn nên chuyển một cấu trúc đã điền với tham số mặc định DEFAULT_CHARSET để liệt kê tất cả các phông chữ được cài đặt.

Xem MSDN để biết thêm thông tin.

+0

Hoặc 'EnumFontFamilies 'nếu bạn không cần tất cả những khả năng" Ex "... –