Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Немогу создать окно |
Посл.ответ | Сообщение |
|
Создано: 08 апреля 2007 18:29 · Личное сообщение · #1 Решил изучить асм под 32 - c MessageBox проблем не возникло=) А вот с созданием окна возникло=( Процесс запускается и висит в памяти но окно не появляется Я решил просмотреть ее из под отладчика RegisterClass возвращает в еах - C149 на код ошибки не похоже=) а вот CreateWindowEx возвращает в еах 0 помогите разобраться. ![]() ![]() |
|
Создано: 08 апреля 2007 18:39 · Личное сообщение · #2 Пользуй: .486
![]() |
|
Создано: 08 апреля 2007 20:10 · Личное сообщение · #3 |
|
Создано: 08 апреля 2007 21:00 · Личное сообщение · #4 А у меня вопрос, почему FASM ругаеться на команду return при компиляции? Вот пример, кусок кода. proc window_procedure,hWnd,uMsg,wParam,lParam push ebx esi edi ;eventhough the API would preserved, but play safe :p cmp [uMsg],WM_DESTROY je wmDESTROY wmDEFAULT: invoke DefWindowProc,[hWnd],[uMsg],[wParam],[lParam] jmp wmBYE wmDESTROY: invoke PostQuitMessage,0 wmBYE: pop edi esi ebx return <--------------------------------- она endp section '.idata' import data readable writeable library KERNEL32, 'KERNEL32.DLL', USER32, 'USER32.DLL' ![]() |
|
Создано: 08 апреля 2007 21:17 · Поправил: satana · Личное сообщение · #5 |
|
Создано: 08 апреля 2007 22:31 · Поправил: seeq · Личное сообщение · #6 |
|
Создано: 08 апреля 2007 23:02 · Личное сообщение · #7 |
|
Создано: 08 апреля 2007 23:03 · Личное сообщение · #8 |
|
Создано: 08 апреля 2007 23:27 · Личное сообщение · #9 |
|
Создано: 08 апреля 2007 23:27 · Личное сообщение · #10 |
|
Создано: 08 апреля 2007 23:29 · Личное сообщение · #11 |
|
Создано: 09 апреля 2007 00:35 · Личное сообщение · #12 PLAYFCUK пишет: А у меня вопрос, почему FASM ругаеться на команду return при компиляции? Вот пример, кусок кода. Нет такой команды. Return - это макрос, который ты можешь написать сам или взять готовый. Если в лом, замени на другой макрос - ret (он входит в стандартный набор). satana 1. Нафиг ты удалил "option casemap:none"? Этого делать нельзя, так как будут путаться переменные типа hwnd и hWnd. И вообще, все стандартные инклудуы Хатча рассчитаны на чувствительность к регистру. 2. Ошибка у тебя в том, что ты не понимаешь, как работает WndProc. Её вызывает система (в тривиальном случае только в цикле сообщений и при создании окна!). Так вот, CreateWindow передаёт сообщение WM_CREATE процедуре окна. Если окно вернуло 0 – то кирдык (создание считается неудачным). Мало того, DefWindowProc всегда возвращает значение, которое нужно сохранить и передать дальше (значения всегда возвращаются в EAX). Так что ищи ошибку в процедуре окна. Всё это в принципе есть в документации, но помню, сам долго врубался, и ничего не помогало кроме экспериментов. В отладчике часами сидел. ----- Всем привет, я вернулся ![]() |
|
Создано: 09 апреля 2007 02:35 · Личное сообщение · #13 |
|
Создано: 09 апреля 2007 02:43 · Личное сообщение · #14 |
![]() |
eXeL@B —› Программирование —› Немогу создать окно |
Эта тема закрыта. Ответы больше не принимаются. |