Проблемы с общими функциями диалога в двоичном DLL - PullRequest
0 голосов
/ 30 апреля 2018

Я сделал простой тест использования общего диалога в консольном приложении, и все работало правильно. Затем я попытался использовать тот же код, поместив его в двоичную DLL. Я вызвал свою функцию из Vb 6, и странные вещи начали происходить.

Я уже пытался без проблем вызвать другие функции из vb 6, содержащиеся в этой dll.

При обычном диалоге при первом вызове диалог отображается правильно. Следующие вызовы vb говорят, что он не может найти dll (ошибка 53), и мне нужно закрыть и снова открыть IDE vb 6. Это происходит только с использованием общих функций диалога. Для любого другого типа кода эта проблема не возникает.

Вот код:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...