暇なので会社でちょい便利ツールを作る
縛りがVC+2010(MFC)ってのが面倒ではあるんだけど、
手癖だけで組めるので設計ロスがほぼ0だからまぁいいか
ツールだけど教え子の教育用も兼ねてるので
色々楽しいコードを入れておく
とりあえずちょい便利ツールなのに
・プラグインでUIが変わる(差し替えは再起動不要)
・多言語サポート(言語変更は再起動不要)
あたりを実装しておこう
MFCなんでリソースファイル/リソースDLLに
プラグイン個別のUIや言語毎のStringTable書けばちょろいんだけど
MFCだとリアルタイム切り替えってところが微妙にできない
とりあえず、SQLiteのBlobデータに入れて、
MFC/GDIオブジェクトに戻せばいんじゃね
とかいう謎の設計を試みる
GdiPlusのBitmapやFontに戻すのはByte配列から楽ちんなんだけど
CBitmapとかMFC型がなまらめんどい
あいつらファイルかリソースから読む前提でしか作られてないからなぁ
デバイスコンテキストとか用意するのめんどくさいから
GdiplusのBitmapからHBitmap作って、
HBitmapからCBitmap作る
お、できるじゃんか
と思ったらCImageListに入れると、背景色が抜けない
マスクの仕方ミスったかと思ったけどそうでもない
うーんと唸ってても仕方ないので、メモリ見てると
bitperpixel:32
あれなんで32bitカラーになってるんだお前
どうもGdibitmapからHBitmapにした時点で
32bitに化けるらしく、そのままでもCBitmapにはできるものの
CImageListの追加時の背景色マスクが32bitCBitmapでは
ラスタオペレーション失敗してマスク配列作成失敗するっぽい?
とりあえず雑はやめて
byte配列からBITMAPFILEHEADERとBITMAPINFOHEADER作って
真面目にBITMAP構造体からデバイスコンテキスト使って
DIBなCBitmap作成
手抜きはアカン
こんなん256色やTrueColorのBITMAPをゴリゴリファイルから読んだ世代でないと
さっぱりわからんぞ
さすがMFCだぜ…
0 件のコメント:
コメントを投稿