デフォルトフォントのサイズ一覧を取得するには?

解決


いね  2006-03-17 03:48:53  No: 60962

度々お世話になります。
環境はWINDOWSXP VC++ MFCダイアログベースです。

システムを動作させる環境での
デフォルトのフォントの「サイズの一覧」を取得したいのですが
やり方が全く分かりません。
7、8、9、10、10.5、11・・・といった値がほしいのですが。
ど、どなたかご教授下さいますよう宜しくお願い申し上げます。


dairygoods  2006-03-17 18:36:52  No: 60963

LOGFONT の lfFaceName を設定した状態で
EnumFontFamiliesEx を呼び出すと、サイズの一覧を得られます。

ただ、TrueType のように任意のサイズで表示できる
フォントの場合は、何も取得できません。
MS WORD などの一覧は、適当に選んだ値を並べているだけです。

http://support.microsoft.com/kb/200111/en-us


いね  2006-03-17 20:10:22  No: 60964

回答有難うございます。
おかげ様で、少し道が見えてきました。
が・・・、サイズの取得が分かりません(汗)

デフォルトフォントの情報をLOGFONT構造体にセット、EnumFontFamiliesExを実行しました。
コールバック関数の  EnumFontSizeExProcは、一度しか呼び出されないのですが
フォントサイズ一覧の情報は、どこに入っているのでしょうか。
度々申し訳ありませんが、ご指摘願います。


dairygoods  2006-03-17 21:50:02  No: 60965

ENUMLOGFONTEX の elfLogFont の lfHeight です。


いね  2006-03-17 22:30:12  No: 60966

またまた、ご回答有難うございます。
なぜか上手くいかないです(汗)

コールバック関数の引数から取得できるlfHeightには、すべて「32」が
入っているのですが・・・。
どこがおかしいのか、ご指摘願えますでしょうか。
度々申し訳ございません。
MSゴシックのサイズ一覧をコンボボックスに設定したいのですが

HDC hDC = ::GetDC(GetSafeHwnd());
LOGFONT LogFont;
LogFont.lfCharSet = DEFAULT_CHARSET;
lstrcpy(LogFont.lfFaceName, _T("MS ゴシック"));
::EnumFontFamiliesEx(hDC, &LogFont, (FONTENUMPROC)EnumFontSizeExProc, (LPARAM)this, 0);
::ReleaseDC(GetSafeHwnd(), hDC);

int CALLBACK EnumFontSizeExProc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, int FontType, LPARAM lParam)
{
  CString str;
  HDC hDC = GetDC(NULL); 
  testDlg * pDlg = testDlg *)lParam;

  int i = lpelfe->elfLogFont.lfHeight;
  str.Format(_T("%d"), i
  pDlg->combo.AddString(str);
  ReleaseDC(NULL, hDC); 
  return 1;
}


dairygoods  2006-03-17 22:39:45  No: 60967

MS ゴシック は TrueType フォントです。

先に書いたとおり、TrueType フォントには
決められたサイズというものがありませんので、取得できません。

複数回コールバックが呼ばれるのは、
LogFont.lfCharSet = DEFAULT_CHARSET;
としているためです。
全ての CharSet のフォントが列挙されています。

フォントが何タイプかどうかは、第三引数を見てください。


いね  2006-03-17 23:29:18  No: 60968

度々有難うございます。
当方が取得したいフォントが、TrueTypeですので
サイズの取得が無理というか、サイズというものが存在しないのですね(汗)
フォントのことについて、勉強してから再度で直して参ります^^;
本当に有難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加