Советы по Delphi

       

FAQ 14 - Windows API


Данный документ содержит информацию, которая чаще всего востребуется пользователями данной темы. Перечень доступных тем, список документов Technical Information Documents и сами документы свободны для загрузки в секции технической библиотеки сайта компании Borland.

"Каким образом я могу включить или выключить конкретный элемент управления в диалоговом окне?"

Используйте функцию API EnableWindow(Wnd: Hwnd, Enable: Bool). Ей необходимо передать два параметра - дескриптор окна (помните, что элемент управления является окном), которое необходимо включить/выключить (enabled/disabled) и логическую величину - True для включения и False для выключения.

"Как мне получить дескриптор или ID элемента управления?"

Если вы имеете указатель на объект, OWL позволит автоматически получить дескриптор окна посредством поля HWindow; PointerToMyControl^.HWindow - дескриптор окна.

Если вы знаете дескриптор элемента управления, ID можно получить, вызвав функцию API GetDlgCtrlID():

ControlID := GetDlgCtrlID(ControlHandle);

Если у вас нет указателя на элемент управления, зато есть ID, вы можете получить его дескриптор с помощью API функции GetDlgItem():

ControlHandle := GetDlgItem(DialogHandle, ControlID);

"Как мне выгрузить DLL-ки ненормально прерванных программ?"

C помощью GetModuleHandle вы можете получить дескрипторы dll-к, вызывайте freelibrary до тех пор, пока GetModuleHandle не возвратит 0. Если dll загружало при этом другую dll, выгрузите "ребенка" в первую очередь.

"Как мне спрятать минимизированную иконку без изъятия программы из списка задач?"

Переместите иконку за пределы экрана с помощью SetWindowPos или MoveWindow, задав иконке отрицательные координаты.

"Как мне изменить сегмент данных dll с фиксированного на перемещаемый?"

Вызовите GlobalPageUnloch(DSEG) во внешнем блоке вашей dll. Это будет работать, заставляя dll не содержать код, требуемый для блокирования страницы сегмента данных. [000586]



Содержание раздела