CImageとビットマップ配列
PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U
- 出版社/メーカー: PFU
- 発売日: 2004/06/17
- メディア: Personal Computers
- 購入: 6人 クリック: 127回
- この商品を含むブログ (27件) を見る
PFU Happy Hacking Keyboard Professional JP 日本語配列 墨 USBキーボード 静電容量無接点 Nキーロールオーバー ブラック PD-KB420B
- 出版社/メーカー: PFU
- 発売日: 2008/11/10
- メディア: Personal Computers
- 購入: 3人 クリック: 344回
- この商品を含むブログ (40件) を見る
PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ホワイト PD-KB220W/U
- 出版社/メーカー: PFU
- 発売日: 2004/06/17
- メディア: Personal Computers
- クリック: 29回
- この商品を含むブログ (23件) を見る
プログラムを作ろう! MS VISUAL C++ 2010 入門 (MSDNプログラミングシリーズ)
- 作者: WINGSプロジェクト,山田祥寛
- 出版社/メーカー: 日経BP社
- 発売日: 2010/09/02
- メディア: 単行本
- 購入: 5人 クリック: 153回
- この商品を含むブログ (15件) を見る
- 作者: 日経ソフトウエア
- 出版社/メーカー: 日経BP社
- 発売日: 2010/07/24
- メディア: 雑誌
- クリック: 14回
- この商品を含むブログ (13件) を見る
// ・・・ HBITMAP hbm = (HBITMAP)c_image; GetBitmapBits( hbm, size, buff ); // ・・・
さすがMFC。あいかわらずウザイことこの上ない。CImage::GetBitsで得られるこの配列は何のために他の処理と親和性のない形で返ってくるのか?理解できん
あぁ、あとリソース管理もMFC特有のウザさがある。CImageをローカルスコープで使うときは以下のようにして準備->描画->後始末をしないと怒られる。MFCってこういうもんだったよなぁ・・
CImage final; final.Create( 640, 480, 24 ); HDC hdc = final.GetDC(); // ここでHDCをとって・・・ if( !wipes.empty() ) { for( size_t i = 0; i < rendering_order.size(); i++ ) { CImage &tmp = images[ rendering_order[i] ]; { tmp.StretchBlt( hdc, 0+i*30, 0+i*30, 100, 100, SRCCOPY ); } } final.Save( L"C:\\final.bmp" ); } final.ReleaseDC(); // このタイミングと・・・ final.Destroy(); // このタイミングで解放と破棄。
上のようなタイミングでCImageを使うときは、最後の解放と破棄処理がシビア。そしてWebに答えがないと普通にわからないw MFCのアホ仕様ご馳走様です。HDCをGetDCでとるかとらないかでReleaseDCの必要性は変わってくるのかな?もう面倒
冒頭でたまにはいいもんだ・・などと書いたが軽く撤回する。これで一晩かかるかもと冷や汗かいたよ・・・