ツールバーのビットマップをリサイズするために CBitmap を調べ始めた.
Inside VC++ Version 5 を参考に次の様に書いてみた.
プログラミング Visual C++ .NET では省かれている?
void CT_CBmpView::OnDraw(CDC* pDC)
{
// CT_CBmpDoc* pDoc = GetDocument();
// ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
{
CDC dc_mem ; dc_mem.CreateCompatibleDC(pDC) ;
CBitmap bitmap ; bitmap.LoadBitmap(IDR_MAINFRAME) ;
BITMAP bm = {0} ; bitmap.GetBitmap(&bm) ;
{
CRect rect(0,0,0,0) ;
GetClientRect(&rect) ;
rect.DeflateRect(100,100,200,200) ;
::SetStretchBltMode(pDC->GetSafeHdc(),HALFTONE) ;
dc_mem.SelectObject(&bitmap) ;
// pDC->BitBlt (rect.left,rect.top,rect.right,rect.bottom,&dc_mem,0,0,SRCCOPY) ;
pDC->StretchBlt(rect.left,rect.top,rect.right,rect.bottom,
&dc_mem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY) ;
}
}
}
そのまま貼り付けてテスト可能な様に View の OnDraw に書いています.
これを参考に実装する場合,リソースの読込み部分などは OnInitialUpdate などで行ってください.
https://itl.mish.work/i_Tools/Doc/blog/migrate/T_CB0604.zip
欲しかった CBitmap のリサイズのコードは次の所にあった.
How do you scale a CBitmap object?