· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Про InitCommonControls

Посл.отвђт Сообщенiе


Дата: Июн 24, 2004 10:05:21

Нажимаешь F7 в оле на InitCommonControls и что же видим - ret. Вопрос: это для совместимости со старыми версиями WinXX или оптимизация Microsoft, что-то типа отложенная загрузкa dll (извините за смешение понятий с Рихтером, зд. это для общего смысла) - когда понадоблюсь только позови :) Ну и собсно, стоит ли юзать InitCommonControls, а то туева хуча док описывает начало работы с CommonControls именно с этой функции.


Дата: Июн 24, 2004 10:16:19

У Iczelion'а написано, что вызов этой функции нужен, чтобы PE-загрузчик загрузил библиотеку comctl32.dll в память. Можешь вместо InitCommonControls написать вызов типа LoadLibrary("comctl32"), результат будет тот же.


Дата: Июн 24, 2004 10:33:42

Можно сделать так:
..........................
.CODE

start:

    invoke GetModuleHandle, NULL
    mov hInstance, eax
    invoke DialogBoxParam, eax, 200, 0, OFFSET DlgProc, 0
    invoke ImageList_Destroy,hImgList
    invoke ExitProcess, eax
    invoke InitCommonControls

DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    mov eax, uMsg
     .IF eax == WM_INITDIALOG
...............................

Т.е. InitCommonControls даже не юзается, но библиотека будет загружена.


Дата: Июн 29, 2004 11:47:18
Правка

Asterix
Мне вот стало интересно: а почему большинство масмовых утилит начинается с кода:
 invoke GetModuleHandle,NULL
 mov  hInstance,eax
 ...

? Разве были преценденты, что EXE был загружен по отличному от ImageBase адресу?


Дата: Июн 29, 2004 12:39:37

IceStudent
> ? Разве были преценденты, что EXE был загружен по отличному от ImageBase адресу?

Какие прецеденты? В общем случае Image Base может варьироваться в зависимости от особенностей сборки exe'шника, и поэтому должен быть определен при старте проги.


Дата: Июн 29, 2004 13:29:08

exe будет загружен не по imagebase если его загружают через LoadLibrary()


Дата: Июн 29, 2004 14:49:52

> exe будет загружен не по imagebase если его загружают через LoadLibrary()
при условии, что у него есть таблица перемещаемых элементов ;)
в общем, свой базовый адрес можно брать и константой если очень хочется оптимизировать прогу по размеру


Дата: Июл 1, 2004 13:46:07
Правка

Asterix
и поэтому должен быть определен при старте проги
В смысле, определён загрузчиком, так?

А вообще, зачем его трогать? Ну, грузятся все ехе под 9х по 0х400000, разве бывает необходимость, чтобы ехе загрузился (при старте, а не при LoadLibrary) по другому адресу?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043