ある言語から別の言語への動的切り替えをサポートする多言語アプリケーションをプログラミングしています。クラス CMFCRibbonPanel に GetName 関数があるので、SetName 関数もあるとよいと思います。しかし、残念ながら、私は目的の機能を見つけることができません。リボン パネルの名前を動的に変更するにはどうすればよいですか? どうもありがとうございました。
質問する
1538 次
5 に答える
3
パネル名は保護されています。
CMFCRibbon から独自のクラスを派生させ、"SetName" メソッドを追加できます。
class MyRibbonPanel : public CMFCRibbonPanel
{
public:
MyRibbonPanel(LPCTSTR lpszName = NULL, HICON hIcon = NULL ) : CMFCRibbonPanel(lpszName, hIcon) {};
void SetName(CString& name ) { m_strName = name; };
};
例 (VS2010 でダミーの SDI アプリケーションを作成した後)
CMFCRibbonCategory* pCategory = m_wndRibbonBar.AddCategory(_T("&Legume"),
IDR_PROPERTIES,
IDB_PROPERTIES_HC );
MyRibbonPanel* pMyPanel = (MyRibbonPanel*)pCategory->AddPanel(_T("Patate"), m_PanelImages.ExtractIcon(1));
pMyPanel->SetKeys(_T("zc"));
pMyPanel->SetCenterColumnVert();
pMyPanel->SetJustifyColumns();
CString s(_T("sdcasdc"));
pMyPanel->SetName(s);
于 2011-02-25T18:14:37.393 に答える
2
VS リボン UI を介してリボンを作成し、手動で作成する必要がない場合にも、他の人に役立つ可能性があります。
前の回答から取り組んでいます。
パネルには ID がないため、それらを選択してポインターを作成することもできません。ただし、パネルに ID を持つ要素が含まれている場合は、これらを使用してパネルへのポインターを作成し、手動で作成する代わりに名前を変更できます。
たとえば、パネルに ID_TEST_COMBO というコンボがあります。
CMFCRibbonComboBox* m_RibbonTestCombo;
MyRibbonPanel* m_ribbonPanel;
m_RibbonTestCombo= DYNAMIC_DOWNCAST(CMFCRibbonComboBox,m_wndRibbonBar.FindByID(ID_TEST_COMBO));
m_ribbonPanel = DYNAMIC_DOWNCAST(MyRibbonPanel, m_RibbonSSSRules->GetParentPanel());
CString s(_T("sdcasdc"));
m_ribbonPanel->SetName(s);
これにより、パネルを手動で作成しなくてもテキストを変更できます
于 2014-08-07T10:26:02.830 に答える
0
おそらく削除して再度追加する必要があります。これが、他の MFC リボン関数のしくみです。
于 2011-02-25T17:04:00.413 に答える
0
SetWindowText 関数を試すことができます。また、テキストの描画をオーバーライドして、そこに独自のテキストを追加することもできます。
お役に立てれば。
于 2011-02-25T13:07:03.990 に答える