Параметры invoke

Тема в разделе "WASM.BEGINNERS", создана пользователем S4urp8n, 29 июл 2008.

  1. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    Уважаемые знатоки, ответьте пожалуйста на вопрос,почему при вызове MessageBox так как в листинге ниже работает, а так
    Код (Text):
    1.   invoke MessageBox,ADDR hWnd,ADDR ClassName,ADDR AppName,MB_OK
    не работает?
    И почему при вызове у hWnd не надо пересылать адрес а в двух последующих надо, из-за того что это строки?
    Код (Text):
    1. ...................................
    2. WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
    3.     .IF uMsg==WM_DESTROY            
    4.         invoke PostQuitMessage,NULL    
    5.     .ELSEIF uMsg==WM_CREATE
    6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    7.       invoke MessageBox,hWnd,ADDR ClassName,ADDR AppName,MB_OK
    8. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    9.     .ELSE
    10.         invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    11.         ret
    12.     .ENDIF
    13.     xor eax,eax
    14.     ret
    15. WndProc endp
    16. ..................................
     
  2. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    invoke MessageBox,hWnd,ADDR ClassName,ADDR AppName,MB_OK
     
  3. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    и что? это я и сам написал?
    там были вопросы вообще-то :dntknw:
     
  4. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    короче я и сам понял :) надо передавать c ADDR строки или массивы а если обычное DWORD то без ADDR
     
  5. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    S4urp8n
    С addr это указатель.
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    S4urp8n а чо "addr MB_OK" не написал :lol:
     
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Не совсем так - с ADDR нужно передавать параметры, которым в прототипе функции соответствуют указатели, а это могут быть не только строки и массивы, но и структуры или простые дворды (например lpNumberOfBytesWritten в WriteFile)
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Надо передавать значения там где надо передавать значения и передавать адреса там где надо передавать адреса. Помоему все очевидно.
    Да и вообще я бы посоветовал автору не использовать инвок вообще. Думаю разница между "push offset hWnd" и "push dword ptr [hWnd]" понятнее.
    Да и вообще лчше не использовать того, чего не понимаешь. Ассемблер например, API,... Делфи с компонентами однозначно лучше в этом плане.
     
  9. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    Меня с пути не собьёшь! :)

    конечно юзать MSVS или BC++ Builder лучше (легче, быстрее, удобнее) но это не то!
    а предыдуший безinvoke-вский опыт был не очень-то! тем более теперь я всё понял!
    и я же только учусь как будто Вы GoldFinch с рождения знаете ассемблер :) !
     
  10. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Ну не с рождения а хотябы с прочтения учебника )
     
  11. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    вот сейчас я читаю уроки Iczeliona и пробую написанное сам написать и соответственно вопросы появляются
     
  12. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    ну так Iczelion это не совсем учебник, точнее это учебник по Win32 но не по ассемблеру
     
  13. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    ну и одновременно В.Пирогов "Ассемблер для Windows"