ホーム » 2024 » 6月 » 07

日別アーカイブ: 2024/06/07

2024年6月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

カテゴリー

アーカイブ

ブログ統計情報

  • 99,342 アクセス


CToolBar ボタンのリサイズ

リサイズ部分を組み込んでみたが
CToolBar SetBitmap
ボタン画像の位置がズレている,DDB に対する操作が何か違っている.


試しに,新しいボタン画像サイズを次の様に求めるとそれなりの高さになった.
newImgSize.cy = newBtnSize.cy – 7 ;
newImgSize.cy = newBtnSize.cy - 7 ;
newImgSize.cx = newBtnSize.cx – 7 ;
newImgSize.cy = newBtnSize.cy – 6 ;
これでサイズは良さそう.
newImgSize.cx =(newBtnSize.cx - 7) * btnCount ;

{
	CSize	imageSize    = newImgSize ;
		imageSize.cx*= btnCount ;
	static	CBitmap	newImg ;	//  CBitmap* newImg = new CBitmap ; 
	{
		CBitmap	tb_img ;
		tb_img.LoadBitmap(idr) ;
		{
			BITMAP	bm = {0} ;  tb_img.GetBitmap(&bm) ;
			CSize	org_size = CSize(bm.bmWidth,bm.bmHeight) ;
			CDC*	wndDC = toolBar->GetDC() ;
			newImg.CreateCompatibleBitmap(wndDC,imageSize.cx,imageSize.cy) ;
			CDC	srcDC ;     srcDC.CreateCompatibleDC(wndDC) ;
			CDC	dstDC ;     dstDC.CreateCompatibleDC(wndDC) ;
			CBitmap*oldSrcBmp = srcDC.SelectObject(&tb_img) ;
			CBitmap*oldDstBmp = dstDC.SelectObject(&newImg) ;
			::SetStretchBltMode(dstDC.GetSafeHdc(),HALFTONE) ;
			dstDC.StretchBlt(0,0,imageSize.cx,imageSize.cy,
				&srcDC,0,0,org_size.cx,org_size.cy,SRCCOPY) ;
			srcDC.SelectObject(oldSrcBmp) ;
			dstDC.SelectObject(oldDstBmp) ;
			}
		}
	toolBar->SetBitmap(newImg) ;
	}

static CBitmap newImg としているため,複数のツールバーには対応していません.
CBitmap* newImg = new CBitmap の様にして終了時開放する必要があります.


https://itl.mish.work/i_Tools/Doc/blog/migrate/Test0607.zip

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.