Win32 в машинных кодах


Главная функция окна - часть 7


Значение следующих за опкодом 2 байтов при возвращении из функции добавляется к ESP. Нам нужно добавить 10h:

; возврат из процедуры с очисткой стека db c2 10 0 &ltпустая строка&gt

Конец файла обычный; после процедуры не забудьте оставить пустую строку.

m 1000 l 200 100 w q

После "чернового" прохода узнаем смещение начала нашей функции (1080h); полученный адрес нужно вставить в структуру WNDCLASSEX в файле data.txt:

; (403048h) адрес главной функции окна db 80 10 40 0

В заголовок никаких изменений вносить не требуется. Собираем файл и запускаем его. Если ошибок не было, сразу появится окно сообщения. А вот после щелчка на "OK" поведение системы станет странным: в определенной области экрана указатель мыши начнет принимать ждущую форму, но окно нашего приложения так и не появится. Мы как бы опять вернулись к одному из предыдущих зацикленных приложений, которое не обрабатывало сообщений. В данном случае наша главная функция окна обрабатывает лишь самое первое сообщение, игнорируя все последующие. В результате окно не создается - т.к. для его создания должны быть специальным образом обработаны некоторые сообщения, посылаемые окну при его создании. Если процедура окна не обрабатывает эти (и вообще любые другие) сообщения самостоятельно, она должна переправлять их системной процедуре окна по умолчанию (DefWindowProc), которую мы в этот раз не использовали.

Но это мы оставим уже на следующий раз. Сегодня было много нового материала; мы будем двигаться небольшими шажками. Это позволяет почувствовать вкус бесконечности.




Начало  Назад  Вперед



Книжный магазин