VST Pluginのエディット画面をビットマップ化する部分のまとめ。 結局、VST Pugin ウィンドウをCreateした最後に下記のコードを入れた。 SetForegroundWindow(m_hWnd); ::UpdateWindow(m_hWnd); sf::view::save_bitmap(name,m_width,m_height,m_hWnd); save_bitmap関数本体はこんなもの。 void save_bitmap(const string& name,const int width,const int height,HWND hwnd,int max_width) { // capture bitmap graphics_apigdiplus::init(); WTL::CDC dc; WTL::CClientDC dcsrc(hwnd); dc.CreateCompatibleDC(dcsrc); WTL::CBitmap bmp; bmp.CreateCompatibleBitmap(dcsrc,width,height); HBITMAP oldbmp = dc.SelectBitmap(bmp); dc.BitBlt(0,0,width,height,dcsrc,0,0,SRCCOPY); dc.SelectBitmap(oldbmp); Gdiplus::Graphics graph(dc); Gdiplus::Bitmap bmpf(bmp_,NULL); CLSID pngClsid; Gdiplus::GetEncoderClsid(L"image/png", &pngClsid); string fname = name + _T(".png"); if(width > max_width) { boost::scopedptr p(bmpf_.GetThumbnailImage(max_width,height * maxwidth / width)); p->Save(CT2W(fname.cstr()),&pngClsid,NULL); } else { bmpf.Save(CT2W(fname.c_str()),&pngClsid,NULL); } }; WTL,GDI+,APIを使った合作だ。