今日も一日 MFC プログラミング。
今修正しているのは一昔前のツールなので、ふつうに GDI を使ったエディタなんだけど、一部 GDI+ を使っている。
PNG や JPEG を読み込むのに便利だからね。
それに、C# で作られたアプリにデータを渡すので、GDI+ での表示を一部シミュレートする必要があるんだよね。
ところがこの GDI+ の機能をつけたら、拡張子の関連付け起動でエラーが出るようになってしまった。
いろいろ調べてみたら、どうも GDI+ の初期化と解放処理が不足しているのが原因だった。
そこを直す。
それから、いつも描画でメモリ不足になってしまうので、その不具合も調査。
バックバッファとして CreateCompatibleBitmap を使っていたんだけど、どうやらこれは GDI リソース上に領域が確保されるので、大きいバッファは取れないらしい。
この部分を CreateDIBSection に変えると、システムメモリ上に領域が確保されるらしい。
これで大きいバッファが確保できるようになった。
メモリも今までより数メガ多く取られるようになったけど、もはや大容量メモリの時代になったので、そこも問題ないよね。
良かった。
他にもいろいろと不具合があって、その調査で時間がかかってしまった。
早く帰ろうと思っていたのに、深夜残業だ…。