Excel COM Add-In dialog interrupts script

Posted by usac on Stack Overflow See other posts from Stack Overflow or by usac
Published on 2009-11-19T08:21:16Z Indexed on 2010/03/14 15:05 UTC
Read the original article Hit count: 397

Filed under:
|
|
|
|

Hi all!

I have written an Excel COM Add-In in C++ for automation of Excel with VBA. It contains an own dialog showing some general informations about the Add-In. Now i create a button in Excel that opens the dialog. Leaving the dialog with the escape key leads to an Excel message that the script is being interrupted instead of just closing the dialog. I could suppress the interruption message with:

Application.EnableCancelKey = xlDisabled

But that seems not to be the solution as the script can not be interrupted any more.
Here is an example how i use VBA to open the dialog:

Private Sub ShowAboutDialog_Click()
  Dim oComAddIn As COMAddIn
  Set oComAddIn = Application.COMAddIns.Item("MyComAddIn.Example")
  oComAddIn.Connect = True
  Call oComAddIn.Object.ShowAboutDlg
End Sub

My guess is that the problem is somewhere in the message handler of the dialog:

INT_PTR CALLBACK CAboutDialog::AboutDlg(
   HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    ...
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
        {
            // Here, the ESCAPE key should also be trapped?
            EndDialog(hwndDlg, LOWORD(wParam));
            return TRUE;
        }
    ...
    }

    return FALSE;
}

The Dialog is created with:

DialogBox(g_hModule, MAKEINTRESOURCE(IDD_ABOUT), hWndParent, (DLGPROC)AboutDlg)

Thanks a lot!

© Stack Overflow or respective owner

Related posts about excel

Related posts about add-in