二进制DLL中常见对话框函数的问题

时间:2018-04-30 14:58:22

标签: c++ dll dialog vb6

我做了一个简单的测试,在控制台应用程序中使用通用对话框,一切正常。然后我尝试使用相同的代码将它放在二进制DLL中。我从Vb 6调用了我的函数,奇怪的事情已经开始发生了。

我已经尝试过调用此dll中包含的vb 6中的其他函数而没有问题。

使用通用对话框,在第一次调用时,对话框将正确显示。接下来的调用vb说它找不到dll(错误53),我必须关闭并重新打开vb 6的IDE。它只会发生在常用的对话框函数中。对于其他每种类型的代码,都不会出现此问题。

以下是代码:

C ++:

bool _stdcall FsDialog(HWND hwnd){
    OPENFILENAME openFile;
    wchar_t szFileName[MAX_PATH];
    wchar_t szFileTitle[MAX_PATH];
    int index = 0;

    ZeroMemory( &openFile, sizeof(OPENFILENAME) );
    openFile.lStructSize = sizeof(OPENFILENAME);

    szFileTitle[0] = '\0';
    szFileName[0] = '\0';
    openFile.hwndOwner = hwnd;
    openFile.lpstrFilter = L"Logs (*.log)\0*.log\0";
    openFile.lpstrFile = szFileName;
    openFile.nMaxFile = MAX_PATH;
    openFile.lpstrFileTitle = szFileTitle;
    openFile.nMaxFileTitle = sizeof(szFileTitle)/sizeof(*szFileTitle);
    openFile.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    openFile.lpstrDefExt = L"log";

    if (GetOpenFileName(&openFile)){
        return(1);
    }
}

VB6:

Private Declare Function FsDialog Lib "mydll.dll" (ByVal hWnd As Long) As Integer

Private Sub Form_Load()
    Debug.Print FsDialog(Me.hWnd)
End Sub

0 个答案:

没有答案
相关问题