Дополнительная память в структуре окна
При регистрации класса окна функцией RegisterClass вы можете в поле cbWndExtra структуры WNDCLASS указать размер дополнительной области памяти, которая будет зарезервирована в структуре, описывающей каждое окно, создаваемое на базе данного класса.
Для работы с этой дополнительной памятью предназначены функции SetWindowWord, SetWindowLong, GetWindowWord, GetWindowLong.
Функция SetWindowWord устанавливает в структуре, описывающей окно hwnd, новое значение wNewWord, при этом смещение устанавливаемого слова определяется параметром offset:
WORD WINAPI SetWindowWord(HWND hwnd, int offset, WORD wNewWord);
Для параметра offset вы должны использовать значения от нуля до указанного в поле cbClsExtra минус 2 или следующие значения:
Значение | Описание |
GWW_HINSTANCE | Идентификатор приложения, владеющего данным окном |
GWW_ID | Идентификатор дочернего окна |
В случае ошибки функция SetWindowWord возвращает нулевое значение.
Функция GetWindowWord позволяет вам прочитать содержимое слова дополнительной области памяти в структуре окна со смещением offset:
WORD WINAPI GetWIndowWord(HWND hwnd, int offset);
Для этой функции вы можете использовать следующие значения:
Значение | Описание |
GWW_HINSTANCE | Идентификатор приложения, владеющего данным окном |
GWW_HWNDPARENT | Идентификатор родительского окна |
GWW_ID | Идентификатор дочернего окна |
Функция GetWindowWord возвращает значение указанного слова из структуры класса окна или нулевое значение при ошибке.
Функция SetWindowLong аналогична функции SetWindowWord, но работает с двойными словами:
LONG WINAPI SetWindowLong(HWND hwnd, int offset, LONG nVal);
Для параметра offset дополнительно можно указать следующие значения:
Значение | Описание |
GWL_EXSTYLE | Расширенный стиль окна |
GWL_STYLE | Стиль окна |
GWL_WNDPROC | Указатель на функцию окна |
Если параметр hwnd содержит идентификатор диалоговой панели, вы можете использовать еще несколько значений:
Значение | Описание |
DWL_MSGRESULT | Значение, возвращенное при обработке сообщения в функции диалоговой панели |
DWL_USER | Дополнительная информация, имеющая отношение к приложению, такая как идентификаторы или указатели |
DWL_DLGPROC | Указатель на функцию диалоговой панели |
В случае ошибки функция SetWindowLong возвращает нулевое значение.
С помощью функции GetWindowLong вы можете получить из структуры окна значение двойного слова, расположенного со смещением offset:
LONG WINAPI GetWindowLong(HWND hwnd, int offset);
Для этой функции можно указать положительное смещение или одну из констант, описанных выше для функции SetWindowLong .