Нужно ли использовать InitCommonControlsEx () и InitCommonControls ()? - PullRequest
10 голосов
/ 07 апреля 2009

Я совершенно новичок в win32. Я работал над этим последние 48 часов.

Я пытаюсь создать "сетку" , и я получил примеры элемента управления List-View и элемента управления заголовком в msdn.microsoft .com.

Первый вызывает функцию InitCommonControls () (кроме того, что я читал, эта функция устарела).

HWND DoCreateHeader(HWND hwndParent, HINSTANCE hInst) 
{ 
    HWND hwndHeader; 
    RECT rcParent; 
    HDLAYOUT hdl; 
    WINDOWPOS wp; 

    // Ensure that the common control DLL is loaded, and then create 
    // the header control. 
    InitCommonControls(); 

    // ...

    // hwndHeader = CreateWindowEx(0, WC_HEADER, ...
}

Второй вызывает функцию InitCommonControlsEx ().

HWND CreateListView (HWND hwndParent, HINSTANCE hInst) 
{     
    RECT rcl; 
    INITCOMMONCONTROLSEX icex;

    // Ensure that the common control DLL is loaded. 
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC  = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex); 

    // ...

    // HWND hWndListView = CreateWindow(WC_LISTVIEW ...
}

Кажется, эти функции нуждаются в библиотеке comctl32.lib, но скачать ее - беспорядок.

Кроме того, я заметил, что если я удаляю эти функции, все продолжает работать хорошо. Тогда они нужны?

Спасибо!

1 Ответ

9 голосов
/ 07 апреля 2009

Да, это необходимо. Они необходимы для регистрации оконных классов для этих пользовательских элементов управления. Скорее всего, какой-то другой компонент в вашем коде загружает их. Я не уверен, но я думаю, что если у вас есть поддержка comctl v6 (визуальные стили XP и выше) в вашем манифесте, вы автоматически получаете commctl32.dll.

Более подробная информация о том, что InitCommonControlsEx делает здесь .

Не уверен, что вы подразумеваете под загрузкой comctl32.lib, он присутствует на каждой платформе Windows начиная с NT 4 и Windows 95, поэтому вам не нужно распространять его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...