テキストボックスでのOpentypeフォントの指定 – プログラミング – Home

テキストボックスでのOpentypeフ...
 
通知
すべてクリア

[解決済] テキストボックスでのOpentypeフォントの指定


T>T
 T>T
(@T>T)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

こんばんは、いきなり質問で申し訳ありません。
VisaulStudio2005ProでCLIにてダイアログボックスを使って作成しているのですが、この
ダイアログボックス内にテキストボックスを貼り付けてあります。
 このテキストボックスに使用するフォントにOpenTypeのフォントを指定するのに、テキ
ストボックスのプロパティで指定しようとしてもOpenTypeのフォントが出てきません。
(メモ帳などでは使用できますのでインストールはされていると思います)OpenTypeの
フォントを使用するには何か設定が必要なのでしょうか。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

FontDialogでOpenTypeFontが列挙できない。[C#,C++]
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16036&forum=7
というスレッドがありました。

対処策は、フォントの設定だけはWin32 APIを使うのかな。
(CreateFont,SendMessage+WM_SETFONT)


返信引用
T>T
 T>T
(@T>T)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

申し訳ありません間違いがありました。ダイアログボックスでなく、CLRフォームを使用
した場合です。


返信引用
T>T
 T>T
(@T>T)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

Blue様ありがとうございます。
APIにてフォント設定をしてみます。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> 対処策は、フォントの設定だけは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 );

としてみましたが、変わっている気配はない。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

すいません。Form1_Loadに記述したらうまくいきました。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> 対処策は、フォントの設定だけはWin32 APIを使うのかな。
> (CreateFont,SendMessage+WM_SETFONT)
はなんか見当違いのような気がしてきた。

とりあえず、

(1) System::Drawing::Fontで指定のフォントが作成できるか、そしてテキストボックス
に設定できるか確認。

(2) (1)ができないときに、CreateFontでHFONTを取得し、System::Drawing::FromHfont
で取得できるフォントを、テキストボックスに設定できるか確認。

(3) (2)ができなければ、SendMessage+WM_SETFONTでHFONTを設定する。

という風に確認してみてください。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました