掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
【MFC】ツールバーをカスタムドローする方法を教えてください。 (ID:73777)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
業務でMFCを使ったソフト開発を行っております(開発環境 Visual Studio 2005)。 ツールバーの文字に色を塗ることになり色々調べてみたのですがうまくいきません。 プログラムを下の方に記載しています。 試した方法としては,OnNotify関数をオーバーライドしてNM_CUSTOMDRAWメッセージを捕まえることでカスタムドローでの描画を試みました。 CDDS_PREERASE のメッセージは来るのですが,その先のCDDS_ITEMPREPAINT メッセージが来てくれません。 また,wParamの値も「59392」というツールバーのコントロールIDとは違う数値が来てしまいます。 どうすればカスタムドローでツールバーの文字の色を変えられるのでしょうか? MFCの知識に乏しいため説明不足な点があるかも知れませんが,宜しくお願いします。 以下,プログラム /****************ヘッダ部分*******************/ CToolBar *m_pToolBar; //ツールバークラスポインタ /***************ツールバー作成****************/ //ツールバークラスインスタンス生成 m_pToolBar = new CToolBar(); if( m_pToolBar->CreateEx( this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_CUSTOMERASE, WS_VISIBLE | CBRS_ALIGN_BOTTOM | CBRS_BORDER_ANY ) == FALSE ){ return FALSE; } m_pToolBar->LoadToolBar(IDR_TOOLBAR1); m_pToolBar->SetButtons( NULL, TB_BTN_NUM + TB_BTN_SPRT_NUM ); //BMP読み込み HINSTANCE hInstance = AfxGetInstanceHandle(); HBITMAP hBmpTB = (HBITMAP)::LoadImage( hInstance, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_VGACOLOR ); CBitmap bmpTB; bmpTB.Attach( hBmpTB ); // CImageList m_imgListTB.Create( 58, 54, ILC_COLOR8, 6, 0 ); m_imgListTB.Add( &bmpTB, (CBitmap*)NULL ); m_pToolBar->GetToolBarCtrl().SetImageList( &m_imgListTB ); /*************カスタムドロー*************************/ BOOL CXXXDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。 if( ((LPNMHDR)lParam)->code == NM_CUSTOMDRAW ){ LPNMTBCUSTOMDRAW lpCustomDraw = (LPNMTBCUSTOMDRAW)lParam; if( CDDS_PREERASE == lpCustomDraw->nmcd.dwDrawStage ){ *pResult = CDRF_NOTIFYITEMDRAW; } if( CDDS_ITEMPREPAINT == lpCustomDraw->nmcd.dwDrawStage ){ lpCustomDraw->clrText = RGB(255, 255, 255); *pResult = TBCDRF_HILITEHOTTRACK; } } return CDialog::OnNotify(wParam, lParam, pResult); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.