1
我已經用C++編寫了Excel COM加載項,用於使用VBA自動化Excel。它包含一個自己的對話框,顯示有關加載項的一些常規信息。 現在我在Excel中創建一個打開對話框的按鈕。使用轉義鍵保留對話框會導致Excel消息,腳本正在被中斷,而不是僅僅關閉對話框。我可以抑制中斷消息:Excel COM加載項對話框中斷腳本
Application.EnableCancelKey = xlDisabled
但是,這似乎並沒有被解決的腳本不能被更多的中斷。
下面是一個例子,我如何使用VBA打開對話框:
Private Sub ShowAboutDialog_Click()
Dim oComAddIn As COMAddIn
Set oComAddIn = Application.COMAddIns.Item("MyComAddIn.Example")
oComAddIn.Connect = True
Call oComAddIn.Object.ShowAboutDlg
End Sub
我的猜測是,這個問題是在對話框的消息處理程序的地方:
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;
}
對話與創建:
DialogBox(g_hModule, MAKEINTRESOURCE(IDD_ABOUT), hWndParent, (DLGPROC)AboutDlg)
非常感謝!