掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オーナードロウメニューについて (ID:52817)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>> WinodwsXPでメニューの表示がおかしくなる現象 パフォーマンスという意味ではいいかげんなコードですが、(^^;; (CDC/CBitmap 関連は ダイアログのメンバにしておくべきだよね) 描画については、Win 2000 と Win XP Pro の両方で ちゃんと動いてますよ。単なる BitBlt だけですが。 IDB_BITMAP1 は 48x48 のビットマップ。 これを16x16単位で切り出して使用しています。 void CCustomMenu::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) { int cx = 0,cy = 0; switch( lpDrawItemStruct->itemID ) { case 0x0B: cx = 16; break; case 0x0D: cy = 16; break; case 0x1F: cx = cy = 16; break; case 0x17: cx = 16; cy = 32; break; } HDC hDC = lpDrawItemStruct->hDC; CDC cdc; CDC cdcMem; cdc.Attach( hDC ); CBitmap bmp,*pbmp; cdcMem.CreateCompatibleDC( &cdc ); bmp.LoadBitmap( IDB_BITMAP1 ); pbmp = cdcMem.SelectObject( &bmp ); cdc.BitBlt( lpDrawItemStruct->rcItem.left,lpDrawItemStruct->rcItem.top,16,16,&cdcMem, cx,cy,SRCCOPY ); cdcMem.SelectObject( pbmp ); cdcMem.DeleteDC(); bmp.DeleteObject(); cdc.Detach(); TRACE("CCustomMenu::DrawItem(itemID=%08X):\n",lpDrawItemStruct->itemID); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.