Delphi, Asm, C, WinAPI, PHP, ..., FAQ |
Добро пожаловать, гость ( Вход | Регистрация )
Delphi, Asm, C, WinAPI, PHP, ..., FAQ |
-=CHE@TER=- |
Jan 5 2007, 00:35
Сообщение
#1
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
-=CHE@TER=- |
Jan 14 2012, 13:26
Сообщение
#2
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Писал я недавно патч для включения крови в German версии Turok 2. Решил, чтобы не маяться с CreateWindow(), сделать диалог в ресурсах. Взял из FASM пример EXAMPLES\DIALOG\DIALOG.ASM и переколбасил его под свои нужды. Всё работает, но странности начались, когда я решил навести последний штрих - добавить manifest для XP/Vista/7.
Программа стала сразу выходить после запуска. Офигев от такого безобразия начал отлаживать - выяснилось, что DialogBoxParam() сразу выходит даже не отображая окно. Убираем манифест - всё снова работает. Пошёл гуглить и натолкнулся вот на такую статью: Особенность InitCommonControlsEx в Windows XP (кстати, там на сайте и другие статьи интересные есть - их немного, так что пробегитесь по ним, кому интересно) В общем, суть такова: чтобы программы с манифестом и DialogBoxParam() работали как надо, нужно чтобы в импорте была библиотека COMCTL32.DLL. Это можно сделать, вызвав, к примеру, InitCommonControls(). Я решил её не вызывать (толку-то всё равно не будет), а просто перепрыгнуть: CODE jmp @ICC invoke InitCommonControls @ICC: Мне главное, чтобы в импорте COMCTL32.DLL была, а если ни одна функция оттуда не вызывается, то компилятор удаляет её из импорта. Вот такая фигня. Спасибо сказали:
|
Упрощённая версия | Сейчас: 6th October 2024 - 14:43 |