InitCommonControls функция
Спасибо
Функция InitCommonControls содержит одну инструкцию - ret, она ничего не делает, нужна только, чтобы библиотека comctl32.dll подгрузилась в память. При инициализации она регистрирует классы окна такие как ListView, TreeView, и.т.д. Значит, если библиотеки в памяти не будет, то функция создания окна/контрола CreateWindowEx вернёт ошибку, и диалог не создастся(функция его создания тоже вернёт ошибку). Так что надо или пользоваться функцией InitCommonControls, или прописать LoadLibrary("comctl32.dll"); Но лучше всё-таки пользоваться InitCommonControls, чтобы PE-загрузчик сам всё что надо загружал. Надеюсь понятно? :)
это в случае создания контролера CreateWindow а если они в ресурсах хроняться?
Цитата:
Originally posted by Son!K
это в случае создания контролера CreateWindow а если они в ресурсах хроняться?
это в случае создания контролера CreateWindow а если они в ресурсах хроняться?
Это в любом случае.
Цитата: (C)dragon
Функция InitCommonControls содержит одну инструкцию - ret, она ничего не делает, нужна только, чтобы библиотека comctl32.dll подгрузилась в память. При инициализации она регистрирует классы окна такие как ListView, TreeView, и.т.д. Значит, если библиотеки в памяти не будет, то функция создания окна/контрола CreateWindowEx вернёт ошибку, и диалог не создастся(функция его создания тоже вернёт ошибку). Так что надо или пользоваться функцией InitCommonControls, или прописать LoadLibrary("comctl32.dll"); Но лучше всё-таки пользоваться InitCommonControls, чтобы PE-загрузчик сам всё что надо загружал. Надеюсь понятно? :)
т.е если использывать InitCommonControls ,нет необходимости прикручивать таблицу импорта includelib \masm32\lib\comctl32.lib
к исполняемому файлу,т.к она сама загрузит ее в память,если ее действие аналогично LoadLibrary("comctl32.dll") ?
Когда функция импортируется статически то мы указываем includelib \masm32\lib\comctl32.lib, когда функция импортируется динамически мы вызываем LoadLibrary("comctl32.dll");
в любом случае одно их двух! и разумеется предпочтительнее через includelib, так как в случае LoadLibrary код засоряется множественными вызовами GetProcAddress.