現在,VC++ 2008でフォームアプリケーション動作を目指して,AVIからBMPを抜き出しピクチャーボックスに張ろうとしています.
この掲示板やhttp://codezine.jp/article/detail/210こちらのほうでコンソールタイプで記述されている方がいますが,それをうまいことフォームアプリケーションに移せません.
特に,BMPINFOHEADERまでの情報が渡せず困っています.
今までVBしかつかったことがなかったのでVCの組み方すら危うい感はあるのですが,ご教授していただけると助かります.
フォームアプリケーションで作成しているということは
欲しいのは System::Drawing::Image でしょうか?
BITMAPFILEHEADER を付加して一旦 System::IO::MemoryStream に書き込み、
System::Drawing::Image::FromStream で読み込むのが楽かもしれません。
その場合,DIBからpictureboxに書き込むよりも早く動作するでしょうか?
現在,BMPINFOFILEHEADERにAVIのフレーム情報を組み込めましたが,
それをpictureboxに描きだそうとするときのハンドル取得で止まっています.
SetDIBitsToDevice(hdc,略)の箇所ですね.
もうちょっと調べてみたいと思います.
bmpInfo = (BITMAPINFOHEADER *)AVIStreamGetFrame(AviFrame,0);
HWND hWnd;
hWnd = reinterpret_cast< HWND >( pictureBox1->Handle.ToPointer());
hDC = GetDC(hWnd);
SetDIBitsToDevice(hDC,0,0,bmpInfo->biWidth,bmpInfo->biHeight,0,0,0,bmpInfo->biHeight,bmpInfo+1,(BITMAPINFO *)bmpInfo,DIB_RGB_COLORS);
このようにしてpictureboxからハンドルをもらい,そこに描画しようとしているのですが,未解決のトークン,未解決の外部シンボルでエラーが帰ってきます.
根本的に間違っているのでしょうか?
すいません,解決しました.
http://bluenotes.justblog.jp/technote/2009/09/vc2005fatal-err.html
が参考となりました.
お時間とらせてしまし申し訳ありません.