■ MFC相談室 MFC12.dll■
■ このスレッドは過去ログ倉庫に格納されています
0705デフォルトの名無しさん
05/01/17 21:11:55ええと・・・WCHARで Unicode のまま WCHAR* szFaceName 状態の変数に "MS UI Gothic" なんて文字列を入れても、
CFontDialog 自体が読み取れる変数は Unicode じゃなくて MultiByte文字らしくて、WCHAR*な "MS UI Gothic" が認識されないというか・・・
CHARFORMAT cf;
cf.cbSize = 10;
cf.dwMask = CFM_FACE;
lstrcpy( cf.szFaceName, CString("MS UI Gothic") ); // 実際にはシステムから受けた WCHAR[] な変数のフォント名がszFaceNameにコピーされる
#if (defined (UNICODE) || defined (_UNICODE))
char strFontName[LF_FACESIZE]="";
WideCharToMultiByte(CP_ACP, 0, cf.szFaceName, -1, strFontName, LF_FACESIZE, NULL, NULL);
strcpy( (char*)cf.szFaceName, strFontName );
#endif
CFontDialog dlg(cf);
今はこんな感じになっています。
Unicodeでコンパイルするとき #if の中で書かれているヤツが抜けていると今回のように。
Dlg.DoModal() の後 dlg.GetCharFormat(cfsave) で cfsave を保持しといたとして、
もう一度 cfsave で CFontDialog を作ると、フォント名の欄が空になってる(Unicodeに変換されたフォント名に該当するフォントが無い)・・・と。
>>704
サンクス
とりあえずはこのまま条件で分けときます。
■ このスレッドは過去ログ倉庫に格納されています