Prea GT-30 winhand.cpp Line:218でAssert
【環境】
Prea GT-30用のVisualStudio2008上のC++で作ったプログラム。
ダイアログベースタイプのプログラム。
【状況】
Canon Prea GT-30用のプログラムを修正(KT2からの修正)をした。
無事移行できたと安心していたがあまかった。
たまに「Debug Assertion Faild!」というエラーメッセジが出るのだ。
発生場所は、winhand.cpp Line:218である。
開発中は発生しなかったが、実際の運用の中で月に1,2回、ごく稀にここで止まってしまうのだ。なお、再現性は確認できなかった。ハンディのリセット後、同じ操作をしても問題は発生しなかった。
デバッグ用のEXEで運用していたため、このことが分かったのだが、リリース用のEXEだとメッセージがでないので、ハングアップしたように見える。
またハングアップした際には、画面のフォントが、設定したものではなく、ダイアログ標準の大きさになっている。私の場合は12ポイントで表示されるべきのところが、10ポイントぐらいで表示されていた。
【解決方法】
月に1,2回の発生なので、まだ直ったと断言できないが、ググってみると、同じ問題は他の環境でも発生しているようで、dc->DeleteDC()ではなく、ReleaseDC(dc);を使えばいいと書かれていた。
このコードは、フォントを作成するときによく使われている。
CDC* dc = GetDC(); CSize spaceSize = dc->GetTextExtent(" "); //dc->DeleteDC(); //これがいけない ReleaseDC(dc); //これに修正する。
とりあえず修正したデバッグ用のEXEを配布して様子をみることにした。
これで直らなかっらまた報告しますね。
“Prea GT-30 winhand.cpp Line:218でAssert” に対して1件のコメントがあります。