GetModuleHandle (NULL) против hInstanceC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 GetModuleHandle (NULL) против hInstance

Сообщение Anonymous »

При программировании с использованием Windows API я всегда сразу делал HINSTANCE из WinMain глобальной переменной. Если я хочу создать кнопку «ОК», я бы сделал это так (с учетом глобального HINSTANCE g_hInstance):

Код: Выделить всё

return CreateWindow("BUTTON", "OK", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON, 10, 10, 100, 30, exampleParentWindow, EXAMPLECHILDID, g_hInstance, NULL);
но в последнее время я вижу, что дескриптор экземпляра определяется без необходимости передавать его в качестве параметра или засорять глобальное пространство имен с помощью вызова GetModuleHandle(NULL)< /код>*. Итак, приведенный выше пример будет выглядеть так:

Код: Выделить всё

return CreateWindow("BUTTON", "OK", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON, 10, 10, 100, 30, exampleParentWindow, EXAMPLECHILDID, GetModuleHandle(NULL), NULL);
*Если ваш компилятор поддерживает это, вы можете написать GetModuleHandle(nullptr), и этот оператор будет иметь тот же результат.

Какое преимущество (если оно есть) у вызова GetModuleHandle(NULL) перед явным указанием дескриптора экземпляра?

Хорошо Печать: Я знаю, что здесь есть ответ, но он не был сформулирован как отдельный вопрос на StackOverflow.

Подробнее здесь: https://stackoverflow.com/questions/217 ... -hinstance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»