Re: フォントハンドルの生成について ( No.1 ) |
- 名前:Will 日時:2012/11/09 07:53
実行時のログを貼って下さい。
確認したいこと
CreateFontToHandleの戻り値は-1ではないのですね?
CreateFontToHandle実行時の引数を提示して下さい。
(サイズ、太さ、タイプ)
正しく表示されない場合の文字列を提示して下さい。
(そのフォントは半角英数字記号しかないようですが全角文字を出力しようとしていませんよね?)
|
Re: フォントハンドルの生成について ( No.2 ) |
- 名前:管理人 日時:2012/11/10 16:32
Bienetresocial が EnumFontName で列挙されない原因は日本語文字セットに対応していないからです
( EnumFontName はデフォルトでは日本語文字セットを含むフォントしか列挙しません )
( 因みに私の環境では Bold の方も列挙されませんでした )
DXライブラリの内部の処理を変更してMSゴシックにならないようにしましたので、
よろしければお試しになってみてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
<本件の現象と今回の処理変更までの経緯にご興味がありましたら読んでください>
DXライブラリでは ChangeFont の第二引数や CreateFontToHandle の第五引数にある非公開引数 CharSet で
特に文字セットの指定が無い場合は日本語文字セットのフォントとしてフォントを作成しようとするのですが、
日本語文字セットが無いフォントでも Win32API の CreateFont では一応フォントの作成は成功してしまい
ただ、それで作成されるフォントはMSゴシックなどOSのデフォルトフォントになってしまうという仕様があります
Win32API の CreateFont で失敗しないのでは作成されたフォントがMSゴシックかどうか判断する手段が無い、
ということで今までは「日本語文字セットの無いフォントを使用される際は非公開引数 CharSet で対処してください」
とご説明する流れだったのですが、今回指定の文字セット( デフォルトでの「指定」は日本語文字セット )が
存在するフォントなのかどうかを事前に EnumFontName でチェックして、無い場合はデフォルト文字セットで
フォントを作成するようにすることでMSゴシックのフォントハンドルが作成されてしまうという現象を解消しました
というか何で今までこの方法に気づかなかったのか謎です
tozicaさんのお書き込みに EnumFontName での確認をされたという内容が無かったら今回も思いついて
いなかったかもしれません・・・
|
Re: フォントハンドルの生成について ( No.3 ) |
- 名前:tozica(解決済み) 日時:2012/11/11 17:05
>Willさま
そうですね、それらの情報は提示すべきでした
以後気をつけたいと思います
>管理人さま
無事、表示を行うことができました。
なるほど、欧文フォントだったことが原因だったのですね……
迅速な対応、本当にありがとうございました。
|