2

ボタンをクリックすると、それぞれのボタンに対して2つの異なるウィンドウフォームを開く必要があるリボンxmlがありますが、同じファイルで2つの異なるボタンクリック機能を定義できません。
xml:2つのボタンとコードを持つi

STDMETHOD(ButtonClicked)(IDispatch* ribbon)
    {//MessageBoxW(NULL,L"Button Clicked!",L"NativeAddin",MB_OK);
        NativeAddIn::ApplicationConfiguration ^appConfigurationform = gcnew NativeAddIn::ApplicationConfiguration();
        appConfigurationform->ShowDialog();
        return S_OK;
    }
STDMETHOD(ButtonClicked)(IDispatch* ribbon)
    {
        //MessageBoxW(NULL,L"Button Clicked!",L"NativeAddin",MB_OK);
        NativeAddIn::Helpme ^helpmeobj = gcnew NativeAddIn::Helpme();
        helpmeobj->ShowDialog();
        return S_OK;
    } 

ボタンクリックで2つの関数を書くにはどうすればよいですか。上記のコードの実行中に発生するエラーは次のとおりです。

HRESULT CConnect::ButtonClicked(IDispatch *)' : メンバー関数は既に定義または宣言されています。

<button id="GoToAppConfiguration" size="large" label="Application Configuration" imageMso="AutoArchiveSettings" onAction="ButtonClicked"/> 
<button id="GoToAppHelp" size="large" label="Help" imageMso="CreateReportFromWizard" onAction="ButtonClicked"/>

助けてください....

4

1 に答える 1

2

ButtonClicked[ヘルプ] ボタンで別の名前を使用できます。

<button id="GoToAppHelp" size="large" label="Help" imageMso="CreateReportFromWizard" onAction="ButtonHelpClicked"/>
STDMETHOD(ButtonHelpClicked)(IDispatch* ribbon)
{
    //MessageBoxW(NULL,L"Button Clicked!",L"NativeAddin",MB_OK);
    NativeAddIn::Helpme ^helpmeobj = gcnew NativeAddIn::Helpme();
    helpmeobj->ShowDialog();
    return S_OK;
} 

これに代わる方法は、IRibbonControlコンテキスト (ribbonパラメーター) を使用し、コントロール ID を要求して switch ステートメントをトリガーすることです。ButtonClickedすべてのボタン クリックを処理する単一のメソッドがあればよいのです。

STDMETHOD(ButtonClicked)(IDispatch* ribbon)
{
    switch (ribbon.Id)
    {
     case "GoToAppConfiguration" : 
        //MessageBoxW(NULL,L"Button Clicked!",L"NativeAddin",MB_OK);
         NativeAddIn::ApplicationConfiguration ^appConfigurationform = gcnew   NativeAddIn::ApplicationConfiguration();
         appConfigurationform->ShowDialog();
         return S_OK;
     case "GoToAppHelp" : 
        //MessageBoxW(NULL,L"Button Clicked!",L"NativeAddin",MB_OK);
        NativeAddIn::Helpme ^helpmeobj = gcnew NativeAddIn::Helpme();
        helpmeobj->ShowDialog();
        return S_OK;
    }   
} 
于 2012-04-26T14:47:29.390 に答える