Функция SetWindowLong изменяет атрибут указанного окна. Функция, также, устанавливает 32-битное значение в заданном смещении дополнительной памяти окна.
LONGSetWindowLong ( HWNDhWnd , // дескриптор окна intnIndex , // смещение устанавливаемого значения LONGdwNewLong // новое значение );
Параметры:
Определяет окно и, косвенно, класс к которому относится окно. | |||||||||||||||||||||||
Определяет смещение (начиная от нуля) устанавливаемого значения, или одно из следующих значений:
Следующие значения также возможны, если параметр hWnd определяет диалоговое окно:
| |||||||||||||||||||||||
Определяет замещаемое значение. |
Возвращаемые значения:
При успешном завершении, функция возвращает прежнее установленное 32-битное значение.
При ошибке возвращается ноль. Для получения дополнительной информации об ошибке, вызовите GetLastError.
Если прежнее значение равно нулю, и функция успешна, возвращаемое значение нулевое, но функия не очищает прежнюю информацию об ошибке. Может оказаться сложностью, определить ошибку или успех функции. Чтобы, все таки, справиться с этим, вы должны самостоятельно очистить информацию об ошибке при помощи SetLastError(0) перед вызовом SetWindowLong. Потом, ошибка функции будет видна по возвращаемому ненулевому значению GetLastError.
При ошибке возвращается ноль. Для получения дополнительной информации об ошибке, вызовите GetLastError.
Если прежнее значение равно нулю, и функция успешна, возвращаемое значение нулевое, но функия не очищает прежнюю информацию об ошибке. Может оказаться сложностью, определить ошибку или успех функции. Чтобы, все таки, справиться с этим, вы должны самостоятельно очистить информацию об ошибке при помощи SetLastError(0) перед вызовом SetWindowLong. Потом, ошибка функции будет видна по возвращаемому ненулевому значению GetLastError.
Замечания:
Функция SetWindowLong завершается с ошибкой, если окно, указанное в параметре hWnd, не относится к тому самому процессу, что вызывающий поток.
Если вы используете функцию SetWindowLong и индекс GWL_WNDPROC для замещения оконной процедуры, оконная процедура должна соответствовать параметрам, указанным в описании функции обратного вызова WindowProc.
При вызове SetWindowLong с индексом GWL_WNDPROC, создается подкласс оконного класса, использованого для создания окна. Приложение не должно подклассировать окно, созданное другим процессом. Функция SetWindowLong создает оконный подкласс, изменяя оконную процедуру, ассоциирующуюся со специфичным окном, заставляя Windows вызывать новую оконную процедуру вместо предыдущей. Приложение должно отправлять любые неотработанные новой оконной процедурой сообщения к предыдущей, вызовом CallWindowProc. Это позволяет приложению создавать цепочку оконных процедур.
Вы не должны вызывать SetWindowLong с индексом GWL_HWNDPARENT для изменения родителя дочернему окну. Вместо этого, воспользуйтесь функцией SetParent.
Если вы используете функцию SetWindowLong и индекс GWL_WNDPROC для замещения оконной процедуры, оконная процедура должна соответствовать параметрам, указанным в описании функции обратного вызова WindowProc.
При вызове SetWindowLong с индексом GWL_WNDPROC, создается подкласс оконного класса, использованого для создания окна. Приложение не должно подклассировать окно, созданное другим процессом. Функция SetWindowLong создает оконный подкласс, изменяя оконную процедуру, ассоциирующуюся со специфичным окном, заставляя Windows вызывать новую оконную процедуру вместо предыдущей. Приложение должно отправлять любые неотработанные новой оконной процедурой сообщения к предыдущей, вызовом CallWindowProc. Это позволяет приложению создавать цепочку оконных процедур.
Вы не должны вызывать SetWindowLong с индексом GWL_HWNDPARENT для изменения родителя дочернему окну. Вместо этого, воспользуйтесь функцией SetParent.
Смотрите также:
CallWindowProc, GetWindowWord, RegisterClass, SetParent, GetWindowLong, SetWindowWord, WindowProc, WNDCLASS