visual-studio-2010 - 如何实现两个按钮点击事件

标签 visual-studio-2010 visual-c++ outlook outlook-addin

我有一个功能区 xml,单击按钮时我必须为相应按钮打开两个不同的窗口窗体,但我无法在同一文件中定义两个不同的按钮单击功能。
xml:我有两个按钮 代码是

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;
    } 

如何在按钮单击时编写两个函数。 执行上面的代码时出现的错误是:

HRESULT CConnect::ButtonClicked(IDispatch *)' : member function already defined or declared.

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

请帮忙......

最佳答案

您可以在“帮助”按钮中为 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 context(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;
    }   
} 

关于visual-studio-2010 - 如何实现两个按钮点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333826/

相关文章:

c# - 子项目引用的某些 DLL 未复制到解决方案的输出文件夹

c++ - 将类函数实现从 .h 移至 .cpp 过程

c# - 为什么这个 int 数组会抛出 IndexOutOfRangeException?

python-3.x - 用 MinGW 或其他 C++ 编译器模仿 Visual C++(对于基于 Visual C++ 的 Python 包)?

javascript - 通过javascript访问outlook联系人文件夹跨浏览器

c# - 从 Form 启动外部 exe,然后等待它生成文件,或者关闭

c - MS VS 2008 中 __declspec(dllimport) 的用法

c++ - 如何在不更改的情况下检索当前的 terminate() 处理程序?

html - Outlook 无法识别填充。任何不使用表格的解决方案?

c# - 处理 Outlook 加载项中的附件事件