MFCApplicationでリボンリソースを動的に切り替える
私のMFCアプリのユーザーはリボンをクリックできる必要があります
別のリボンUIに切り替えるためのボタン(たとえば、別のもの)
言語).私のプロジェクトにidr_ribbonとidr_ribbon1があります.NS
「スイッチ」ボタンには、次のイベントハンドラがあります.
VIDCMAINFRAME :: ONSWITCHRIBBON()
{
//TODO:
コマンドハンドラコードを追加ここに追加
M_Wndribbonbar.RemoveAllCategories();
M_WndribBonbar.RemoveAllFromTabs();
M_Wndribbonbar.ShowPane(0、
0,0);
検証(M_WndribBonbar.loadFromResource(IDR_RIBBON1)).
M_Wndribbonbar.ShowPane(1,0,0).
M_WndribBonbar.RecalClayout();
RecalClayout();
RedrawWindow();
}
書かれているように、それは以下のアクセス違反を引き起こします
以下のRedrawElement機能でのMFCリボンパネルコード:
void cmfcribbonPanel :: MouseButtonup(CPOINT POINT)
{
assert_valid(これ);
m_bmouseisdown.
= false;
もしの場合
(m_phightighted!= null)
{
assert_valid(m_phightlighted);
h
hwndParent= getParentWnd()->getSafehwnd();
cmfcribbonBaseElement*
Phighlighted= m_phighlighted.
M_phighthighted->OnlButtonUp(Point);
もしの場合
(:: isWindow(hwndparent)&&phighlighted->m_bispressed)
{
Phighlighted->M_Bispressed
= false;
RedrawElement(Phighlighted); アクセス違反
フォロー翼2行が呼び出し前に追加された場合
私のコードのloadResource(idr_ribbon1):
RemovePanefromDockManager(&M_Wndribbonbar、
true、true、false、null);
検証(M_Wndribbonbar.create(これ)).
それから
アクセス違反なしで実行されます.しかし、私は他のすべてのバーを動かす必要があります
元のドッキングペインレイアウトを得るためのアプリ(キャプションバーのような).ある
この周りの方法は?
最後に、もう一つのバグがあります
新しいリボンで印刷プレビューを引き起こすCMFCリボンコードで
失敗する(idr_ribbon1).それはどのように避けることができますか?
返信リスト(回答:1)
こんにちは、申し訳ありませんが、間違ったフォーラム.
それは可能ですが、あなたがWindows用のエンドユーザーの顧客フォーラムでここにその答えを取得することはできません.
いくつかのMSDNはQ&Aに参加してきました.また、ヘルプを見つける可能性が高くなります.