void set_font(HWND hDlg, char* fontBuff, int* fontSize) {
TCHAR font[32];
CHOOSEFONT cf;
LOGFONT lf;
HDC hdc;
hdc=GetDC(0);
ZeroMemory(&cf, sizeof(cf));
ZeroMemory(&lf,sizeof(lf)); lf.lfCharSet=dwCharSet|ANSI_CHARSET;
lf.lfHeight = -MulDiv(*fontSize, GetDeviceCaps(hdc, LOGPIXELSY), 72);
ZeroMemory(&font,sizeof(font));
memcpy(font, fontBuff, strlen(fontBuff));
lstrcpy(lf.lfFaceName, font) ; cf.lpLogFont=&lf;
cf.lStructSize= sizeof(CHOOSEFONT);
cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS |CF_TTONLY | CF_SELECTSCRIPT;
cf.nFontType=SCREEN_FONTTYPE;
cf.iPointSize =0;
if(ChooseFont(&cf) !=NULL) {
memcpy(fontBuff, cf.lpLogFont->lfFaceName, strlen(cf.lpLogFont->lfFaceName));
int x=cf.iPointSize/10;
memcpy(fontSize, &x, 4);
printf("size: %d\n", cf.iPointSize/10);
printf("font: %s\n", cf.lpLogFont->lfFaceName);
}
ReleaseDC(0,hdc);
}char myBuff[64]="黑体";
int size=10;main() {
while(1) {
set_font(0, myBuff, &size);
}
return 0;
}对于"宋体"和一些其他字体,一打开不显示字体和字符集,一片空白。。如图