2009-03-10 12 views
10

私はCMFCToolbarの中にメニューボタンを持っています。メニューの各項目が独自のアイコンを持っているので、メニュー内の別の項目が選択されるたびにボタンのビットマップを置き換えます。CMFCツールバーのメニューボタンの画像を変更する

CMFCToolBarMenuButton::SetImageを使用してアイコンの変更に成功しましたが、メニュー項目のアイコンも変更されます。残念な。ここで

alt text http://www.freeimagehosting.net/uploads/137269b0f2.jpgalt text http://www.freeimagehosting.net/uploads/879d03843a.jpg

コードのサンプルです:

if ((pToolbar != NULL) && (idBase != 0)) 
{ 
    int ixButtonToReplace     = pToolbar->CommandToIndex(idBase); 
    CMFCToolBarMenuButton* pBtnToReplace = dynamic_cast<CMFCToolBarMenuButton*> 
               (pToolbar->GetButton(ixButtonToReplace)); 
    if (pBtnToReplace) 
    { 
     const CObList& listCommands = pBtnToReplace->GetCommands(); 
     POSITION pos    = listCommands.GetHeadPosition(); 
     while (pos != NULL) 
     { 
      CMFCToolBarMenuButton* pItem = (CMFCToolBarMenuButton*) listCommands.GetNext(pos); 
      if (pItem && (pItem->m_nID == idButtonToReplaceWith)) 
      { 
       pBtnToReplace->SetImage(pItem->GetImage()); 
      } 
     } 
    } 
} 

任意のアイデア?ありがとうございました。

+1

シーケンス:12 /コンテンツが選択されています。ドロップダウンをクリックします。 (X)/名前をクリックします。コンテンツのアイコンが名前に変わりましたか? – enriquein

答えて

1

メニューボタンの意味がわからないのですか?

別のボタンを1つのsetImageコールで明示的に変更すると、リソースIDが何らかの種類で共有されている場合、唯一の解決策は、IDが異なることを確認することです(両方のリソースが個別に処理されることを確認する必要があります) )。 しかし、これを確認するためにMFCリソースファイルを混乱させて以来、長いことです。

2

これはすぐに使用できます。唯一必要なのは、CMFCToolBar::AddToolBarForImageCollectionに電話をかけて、MFCが使用する画像を知ることができるようにすることです。

関連する問題