Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

InitCommonControls функция

2.0K
25 апреля 2004 года
Son!K
29 / / 05.06.2003
Народ если инклужу commctrl.h обязательно ли использовать функцию InitCommonControls(), если нет объясните пожалуйста зачем она нужна и как это влияет на комтролеры из ресурсов.

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



Это в любом случае.

23K
02 декабря 2008 года
s0cks
41 / / 02.02.2008
Цитата: (C)dragon
Функция InitCommonControls содержит одну инструкцию - ret, она ничего не делает, нужна только, чтобы библиотека comctl32.dll подгрузилась в память. При инициализации она регистрирует классы окна такие как ListView, TreeView, и.т.д. Значит, если библиотеки в памяти не будет, то функция создания окна/контрола CreateWindowEx вернёт ошибку, и диалог не создастся(функция его создания тоже вернёт ошибку). Так что надо или пользоваться функцией InitCommonControls, или прописать LoadLibrary("comctl32.dll"); Но лучше всё-таки пользоваться InitCommonControls, чтобы PE-загрузчик сам всё что надо загружал. Надеюсь понятно? :)



т.е если использывать InitCommonControls ,нет необходимости прикручивать таблицу импорта includelib \masm32\lib\comctl32.lib
к исполняемому файлу,т.к она сама загрузит ее в память,если ее действие аналогично LoadLibrary("comctl32.dll") ?

261
02 декабря 2008 года
ahilles
1.5K / / 03.11.2005
программе надо как-нибудь вызвать функцию InitCommonControls, которая находится в comctl32.dll . Функцию можно вызвать в двух случаях: когда импортирована статически, т.е. когда DLL грузит сам загрузчик, либо когда импортирована динамически, т.е. когда DLL мы загрузили сами.
Когда функция импортируется статически то мы указываем includelib \masm32\lib\comctl32.lib, когда функция импортируется динамически мы вызываем LoadLibrary("comctl32.dll");
в любом случае одно их двух! и разумеется предпочтительнее через includelib, так как в случае LoadLibrary код засоряется множественными вызовами GetProcAddress.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог