c++调出系统字体选择对话框
demo代码
#include <windows.h>
int main() {
CHOOSEFONT cf;
LOGFONT lf;
cf.lStructSize = sizeof(CHOOSEFONT);
cf.hwndOwner = (HWND)NULL;
cf.hDC = (HDC)NULL;
cf.lpLogFont = &lf;
cf.iPointSize = 0;
cf.Flags = CF_SCREENFONTS;
cf.rgbColors = RGB(0, 0, 0);
cf.lCustData = 0L;
cf.lpfnHook = (LPCFHOOKPROC)NULL;
cf.lpTemplateName = (LPWSTR)NULL;
cf.hInstance = (HINSTANCE)NULL;
cf.lpszStyle = (LPWSTR)NULL;
cf.nFontType = SCREEN_FONTTYPE;
cf.nSizeMin = 0;
cf.nSizeMax = 0;
::ChooseFont(&cf);
// 得到HFONT 返回
HFONT hfont = ::CreateFontIndirect(&lf);
::DeleteObject(hfont);
return 0;
}
效果展示

cf.Flags还可以通过加入CF_APPLY标志在字体选择对话框中添加应用按钮,点击应用按钮会触发WM_COMMAND消息,此时可以通过WM_CHOOSEFONT_GETLOGFONT消息来获取选择的字体。
关于字体选择的详细介绍请阅读微软文档:CHOOSEFONT