MS Shell Dlg

[戻る]
亀山 2009/11/28(土) 16:35:28
VS2005やVS2008のダイアログエディタでフォントを「MS Shell Dlg」にすると、
動作環境でのフォントに合わせてくれると解釈しているのですが、
自分のPC(XP)で動かすと、「MS UI Gothic」が使われず、
ボタン内の「...」の表示なども妙に幅を食った表示になってしまいます。

レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes
には、「MS Shell Dlg」の値は「MS UI Gothic」と書かれています。

このフォントはなにをもとに選ばれているのでしょうか?
それとも、このプロパティ以外にもなにか設定するべきものがあるのでしょうか?

てんてく 2009/11/30(月) 09:09:13
※回答ではないです
自分もフォントの設定はうまく行かずに苦労しています。
理由は良くわかりませんが環境により”MSShellDlg2”が使われていることがあります。

このいわゆるシステムフォントのポイントがいくつになっているかがこれまた不明で、
環境により違いがあるようです。レジストリ内にあって可変であれば自分も知りたいです。

仲澤@失業者 2009/11/30(月) 14:58:50
この仕様はVista以降でのフォントの規定値に変更が加えられていること
などを勘案すると既に破綻しつつあるのかもしれません。
DLGで使用するフォントの変更ができるUI(又は初期化方法)を付け加えて
おくとこで自衛するしかないかもしれません。

なお、FontSubstitutesに正しいロケールを考慮した代替フォントが
記載されているにも関わらず、しょ〜もないシステムフォントが使用
されてしまうのは、キャッシュが壊れているか、フォントファイル
自体が書き換わっている可能性があるかもしれません。

仲澤@失業者 2009/11/30(月) 15:09:56
あと、やっているとは思いますが
  ::setlocale( LC_ALL, "jpn");
してみるとか。

亀山 2009/12/01(火) 09:22:16
てんてくさん、仲澤@失業者さん、ご意見ありがとうございます。

> 環境により”MSShellDlg2”が使われていることがあります。

なるほど、自分のPCで表示されているのは、この「MS Shell Dlg 2」っぽいです。
レジストリ内では「Tahoma」となっていますが、
このフォントと同じように見えます。

「MS Shell Dlg」と「MS Shell Dlg 2」って、
どこでどう使い分けられているものなのでしょうか。
XPではユーザがいじっていない限り「MS UI Gothic」となるのが
正しい動作なのではと思われるのですが。

> 既に破綻しつつあるのかもしれません。

みなさんは現状ではフォントはなにを選択されているのでしょうか。
個人的には「MS UI Gothic(9)」を直接指定してしまいたいのですが、
Vistaや7では逆に違和感がありそうですし(未確認)、
「Use System Font」という選択肢がある以上、
これに従っておくべきなのかなと思っていたところに
このような問題が発生してしまっている状態です。

> あと、やっているとは思いますが
>   ::setlocale( LC_ALL, "jpn");
> してみるとか。

これをInitInstance()に入れてみても同じようです。

てんてく 2009/12/01(火) 15:21:36
どう使い分けられているかは不明ですね。ぐぐってもあまりヒットしませんし・・・
自分はとりあえずfacenameが違うと思われるときは両方MS UI Gothicにしています。
facenameに対するフォントファイルがオカシイなどの場合は(仲澤さんの仰るパターン)
メイリオXpなどで検索するとレジストリの関連付けやフォントファイルの中身に
たどり着けるかと。

が、やっぱりポイントの問題が解決できず苦い思いをしているのが現状です。
Vistaや7については動作環境を持ってないのでちょっとわかりません

亀山 2009/12/04(金) 09:32:18
てんてくさん、ご意見ありがとうございます。

> どう使い分けられているかは不明ですね。ぐぐってもあまりヒットしませんし・・・

自分もなかなか情報を見つけられません。
Vistaや7だと、この値はどのようになっていて、
「Use System Font」がTrueのダイアログはどのように表示されるのでしょうかね。

> 自分はとりあえずfacenameが違うと思われるときは両方MS UI Gothicにしています。

この両方というのは、ダイアログのプロパティ内に設定項目が2つあるのでしょうか?
それとも、自環境のレジストリ内の「MS Shell Dlg」と「MS Shell Dlg 2」の値を
自分で書き換えてしまわれているということでしょうか?

subaru 2009/12/04(金) 12:54:08
>Vistaや7だと、この値はどのようになっていて、
>「Use System Font」がTrueのダイアログはどのように表示されるのでしょうかね。

Vista でレジストリを確認してみたところ、「MS Shell Dlg」と「MS Shell Dlg 2」は
XP の頃と同様の設定値のようですね。
Windows7 は未確認ですが、IE の設定画面などダイアログではやはり
XP、VISTA と同様のフォントが使われていたように思います。

個人的には仲澤@失業者さんの動的なダイアログフォント変更の案で
実験的に「Meiryo UI」優先とか試してみたりしてますが。。。

以下のページにも一応ガイドラインっぽいものがあります。
http://msdn.microsoft.com/ja-jp/library/aa511282.aspx

亀山 2009/12/13(日) 18:52:27
[[解決]]
subaruさん、調べていただきありがとうございます。

> IE の設定画面などダイアログではやはり
> XP、VISTA と同様のフォントが使われていたように思います。

ということは通常はVISTAや7でも
「MS UI Gothic」や「Tahoma」で表示されるものが多いということですね。

ダイアログのフォントを動的に変更する方法もいろいろ試してみて
どのようにするのがよいのかを調べてみたいと思います
(昔、CDialogTemplateクラスを自分で使って
フォントサイズを変更したことがありますが、このようなことですよね?)。

ありがとうございます。

古いスレッドには追加発言できません。