こんばんは、いきなり質問で申し訳ありません。
VisaulStudio2005ProでCLIにてダイアログボックスを使って作成しているのですが、この
ダイアログボックス内にテキストボックスを貼り付けてあります。
このテキストボックスに使用するフォントにOpenTypeのフォントを指定するのに、テキ
ストボックスのプロパティで指定しようとしてもOpenTypeのフォントが出てきません。
(メモ帳などでは使用できますのでインストールはされていると思います)OpenTypeの
フォントを使用するには何か設定が必要なのでしょうか。
FontDialogでOpenTypeFontが列挙できない。[C#,C++]
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16036&forum=7
というスレッドがありました。
対処策は、フォントの設定だけはWin32 APIを使うのかな。
(CreateFont,SendMessage+WM_SETFONT)
申し訳ありません間違いがありました。ダイアログボックスでなく、CLRフォームを使用
した場合です。
Blue様ありがとうございます。
APIにてフォント設定をしてみます。
> 対処策は、フォントの設定だけはWin32 APIを使うのかな。
> (CreateFont,SendMessage+WM_SETFONT)
試してみましたが、どうも反映されていないような、、、
CreateFont関数の指定が不味いのかも。。。
Form1に HFONT型のメンバ変数を追加。
InitializeComponentメソッドで
// 適当
this->hFont = CreateFont(40, 0, 0, 0, FW_BOLD, TRUE, TRUE, FALSE,
SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
VARIABLE_PITCH | FF_ROMAN ,NULL );
HWND hWnd = ( HWND )this->textBox1->Handle.ToPointer();
::SendMessage( hWnd, WM_SETFONT, ( WPARAM )this->hFont, MAKELPARAM( TRUE, 0) );
デストラクタで、
::DeleteObject( this->hFont );
としてみましたが、変わっている気配はない。
すいません。Form1_Loadに記述したらうまくいきました。
> 対処策は、フォントの設定だけはWin32 APIを使うのかな。
> (CreateFont,SendMessage+WM_SETFONT)
はなんか見当違いのような気がしてきた。
とりあえず、
(1) System::Drawing::Fontで指定のフォントが作成できるか、そしてテキストボックス
に設定できるか確認。
(2) (1)ができないときに、CreateFontでHFONTを取得し、System::Drawing::FromHfont
で取得できるフォントを、テキストボックスに設定できるか確認。
(3) (2)ができなければ、SendMessage+WM_SETFONTでHFONTを設定する。
という風に確認してみてください。