トップページ > 記事閲覧
Fontハンドルの数が限界数( 40 )に達して〜のエラーについて
名前:コロッケうどん 日時: 2021/06/17 16:58

表題のエラーメッセージに関する質問です。プログラミング初心者のため拙い質問となってしまうことをお許し願います。 現在、 @Fontハンドルの入れ物を作り、 ALoadFontsという独立した関数を自分で作りそこでフォントをロードして、 BDrawStringToHandle関数でそのフォントを用いて文章を描画しようとしています。 該当部分のコードの例を挙げさせていただきます。 @ int commandfont = -1; A int LoadFonts{ commandfont = CreateFontToHandle("NULL", 30, -1, -1);   return 0; } B DrawStringToHandle(0, 0, "テスト", black, commandfont);(blackは別で定義しています) このように書いて、滞りなく進んでいたのですがデバッグをしてみますと途中から表題のエラーメッセージが表示されていることに気づきました。 ブレークポイントを設定して試してみたところ、LoadFonts関数は設計通り一度しか呼び出されておらず、またここ以外にCreateFontToHandleを使っている個所もありません。 しかし、このようなメッセージが表示されたからと言って他のフォントが読み込めていないということはなさそうです(見た目は意図したとおりに描画されます。)。 以上を踏まえて質問なのですが @このメッセージは無視してもいいものなのでしょうか? A問題を解決しこのメッセージが表示されないようにするにはどうすればよいでしょうか? 以上二点、ご教授頂けると幸いです。よろしくお願いします。
メンテ

Page: 1 |

Re: Fontハンドルの数が限界数( 40 )に達して〜のエラーについて ( No.1 )
名前:管理人 日時:2021/06/19 23:13

プログラム全体を拝見しないと分かりませんが、『Fontハンドルの数が限界数( 40 )に達して〜』のエラーは 文言の通りフォントハンドルが限界数まで作成されないと出力されないものなので どこかでフォントハンドルが作成されてしまい、フォントハンドルの数が限界の数の40個に達して しまっているのだと思います 途中からエラーメッセージが表示されているとのことですが、そのエラーメッセージが表示される( 出力される ) タイミングで CreateFontToHandle が実行されてしまっていますので、LoadFonts の中に ブレークポイントを配置して、想定通り1度しか呼び出されていないか確認してみてください m(_ _)m > @このメッセージは無視してもいいものなのでしょうか? メッセージが出てしまう原因を修正したほうが良いですが、最悪動作に問題がなければ無視しても良いかもしれません > A問題を解決しこのメッセージが表示されないようにするにはどうすればよいでしょうか? どこかで CreateFontToHandle が呼ばれてしまっていますので( もしくは LoadFontDataToHandle )、 呼んでしまっている箇所を突き止めて不要な CreateFontToHandle の呼び出しを行わないように することと、不要になったフォントハンドルは DeleteFontToHandle で削除するようにすると このメッセージが出力されないようになります
メンテ
Re: Fontハンドルの数が限界数( 40 )に達して〜のエラーについて ( No.2 )
名前:コロッケうどん(解決済み) 日時:2021/06/22 00:20

返信ありがとうございます。無事解決できましたので報告させていただきます。 結論といたしましては、LoadFonts関数に移し損ねたCreateFontToHandle関数があり、それがよく使う関数の中に紛れていたため想定以上にフォントが作られているというものでした。 単純なポカでありお恥ずかしい限りです。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存