kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

ChooseFontと互換フラグ

ref:[id:kkamegawa:20090125:p2]
ChooseFontの話を以前書いたけど、Windows 7 Beta1では以下の手順を踏めば非表示状態のフォントも全部表示されます。

  • C/C++の場合、WINVERに0x0601を定義する(#define WINVER 0x0601)。
  • CHOOSEFONT構造体のFlagsにCF_INACTIVEFONTSを定義する。

従来のプログラムはといえば、すくなくともBeta1ではコントロールパネルで非表示を表示に変更していくしかないようです。exeの右クリックにあるプログラムの互換性でWindows Vistaを指定してもだめでした。

あれ、Windows 7のIE8ではてなフォトライフのウィンドウを開いたあとIEでIMEのON/OFFができなくなったー。

#define WINVER 0x0601

CHOOSEFONT   cfh;
LOGFONT lgf;

ZeroMemory(&cfh, sizeof(CHOOSEFONT));
ZeroMemory(&lgf, sizeof(LOGFONT));
cfh.lStructSize = sizeof(CHOOSEFONT);	
cfh.hwndOwner = hWnd;
cfh.lpLogFont = &lgf;
cfh.Flags = CF_EFFECTS | CF_SCREENFONTS;
//全部表示する場合このフラグを追加
cfh.Flags |= CF_INACTIVEFONTS;
ChooseFont(&cfh);