Win32Api: Расшифровка записи wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

Как я понимаю hbrBackground объект класса.
Но все не могу понять запись (HBRUSH)(COLOR_WINDOW+1);
Это анонимный объект? Или же это указатель на функцию?
Если HBRUSH это класс, то тогда зачем писать (HBRUSH) в скобках, ведь тогда достаточно просто написать HBRUSH(аргументы).

(HBRUSH) приводит к типу HBRUSH выражение COLOR_WINDOW+1

Wcex - объект
hbrBackground - свойство объекта wcex
HBRUSH - тип данных
COLOR_WINDOW - значение перечисления

Смысл заключается в следующем. Взять из перечисления следующее за цветом фона окна значение, явно привести его к типу кисти и закрасить этим цветом фон объекта (как-то так)

Wcex - обьект класса
hbrBackground - поле класса
HBRUSH - указатель на структуру hbrush__
COLOR_WINDOW - обычное число
Хз зачем присваивать указателю число, но видимо в данном контексте он используется тоже как число.

Итак та запись означает что мы вначале COLOR_WINDOW (это 5) прибавляем 1, получаем int = 6; И преобразуем ее в unsigned long long int = 6 путем добавления (HBRUSH) к записи. Смотрите раздел явных преобразований.
Если не записать скобки то вначале 5 преобразуется в указатель = 5, а +1 уже будет адресной арифметикой и прибавит число байт той сущности, на которую ссылается указатель. В данном случае это 4 байта. То есть 5+4 = 9.

Добавить комментарий