Если правильно понял - проблема аналогична такой (см. дале). Но сам мучаюсь над ее решением. Если известно как ее можно решить буду несказано благодарен за сохраненные для меня часы сна. Если что найду сообщу. Как в Visual Basic 6 правильно описать загрузку библиотеки диалогов через функцию mapLoadLibrary? Пробуем написать в VB6 код, который аналогичен следующему: HINSTANCE lib; // Определить прототип функции selSaveSelect long int (WINAPI * func)(HMAP hmap); // Загрузить библиотеку (FARPROC)func = mapLoadLibrary("mapselec.dll", &lib, "selSaveSelect"); if (func == 0) return; // Вызвать функцию (*func)(hMap); // Выгрузить библиотеку FreeLibrary(lib); Делаем так: 'Объявляем глобальную переменную - идентификатор библиотеки Global lib As Long 'Объявляем функцию загрузки библиотек Declare Function mapLoadLibrary Lib "c:\Panorama7\mapacces.dll" _ (ByRef dllname As String, ByRef libinst As Long, _ ByRef funcname As String) _ As Long В программе: Public Sub CmSelect() Dim func As Long Dim note As Long 'Определяем идентификатор процесса ipPrevWinProc = SetWindowLong(Form1.hwnd, GWL_WNDPROC, _ AddressOf CmSelect) 'присваиваем значенте переменной func = SetWindowLong(Form1.hwnd, GWL_WNDPROC, ipPrevWinProc) MsgBox "func=" & func func = mapLoadLibrary("c:\Panorama7\mapselec.dll", _ lib, "selSetViewStaff") If func = 0 Then Exit Sub Как делать дальше? Так? Или все полностью неверно? '// Вызвать функцию ' (*func)(hMap); End Sub
Ответить
|