|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 21, 2004 23:54:26 Написал простенькую ф-цию в dll на asm'e, пытаюсь вызвать её из VB, но выскакивает ошибка 49: "Плохое dll соглашение вызова". Все возможные причины такого просмотрел в msdn, вроде всё правильно, но увы... не работает. Со строками получается передача параметров в dll, c числами - dword - не получается. Вернее параметры в dll приходят, я их там вижу, вызываю диалог выбора цвета, он мне выдает decimal значение выбраного цвета и при возвращении из dll - ошибка. Тут процедура: ChooseColour proc hWin:DWORD, Flags:DWORD
LOCAL hHandle :DWORD
LOCAL dwFlags :DWORD
m2m hHandle,hWin
m2m dwFlags,Flags
invoke ColorDialog,hHandle,hInstance,dwFlags ;ф-ция из masm32lib
ret
ChooseColour endp
А тут вызов её: Declare Function ChooseColour Lib "BrowseDLG.dll" ( _
ByVal hwnd As Long, _
ByVal dwFlags As Long) As Long
ChooseColour ByVal Me.hwnd, ByVal 0
Кто знает vb подскажите, где тут могут быть грабли? |
|
|
Дата: Сен 22, 2004 00:19:25 plz Приаттач DLL. |
|
|
Дата: Сен 22, 2004 00:24:05 cresta предохраняй регистры и все будет в порядке. Глянул на колор диалог - там edi корежится, вот VB и ругается праведно |
|
|
Дата: Сен 22, 2004 00:30:43 · Поправил: PavPS В msdn написаны основные регистры, которые должны быть сохранены. ChooseColour PROC EXPORT LOCAL hHandle:DWORD LOCAL dwFlags:DWORD PUSHA MOV EAX,DWORD PTR [ESP+32+12+04+00] MOV hHandle,EAX MOV EAX,DWORD PTR [ESP+32+12+04+04] MOV dwFlags,EAX invoke ColorDialog,hHandle,hInstance,dwFlags ;ф-ция из masm32lib POPA ret 8 ChooseColour endp masquer, опередил... :) |
|
|
Дата: Сен 22, 2004 01:21:37 masquer,PavPS Оцеловал бы, но не модно... (могут неправильно понять:)) Сделал ChooseColour proc uses edi esi hWin:DWORD, Flags:DWORD - работает :) PavPS не знаю нужно ли ещё, но на всякий случай приаттачил. 988415669__BrowseDLG.Asm |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074 |