Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Delphi: Маленькие хитрости arrow Delphi: Изменим размер и местоположение кнопочки "пуск" (MoveWindow, FindWindow).
29.05.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Delphi: Изменим размер и местоположение кнопочки "пуск" (MoveWindow, FindWindow). Печать E-mail
Автор megabax   
10.08.2010 г.
New Page 1

Delphi: Изменим размер и местоположение кнопочки "пуск" (MoveWindow, FindWindow).

Сделать это довольно просто:

procedure TfrmStartMove.btnStartMoveClick(Sender: TObject);
begin
     MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil), 200, 0, 110, 32, true);
end;

А вот результат:

Delphi: Изменим размер и местоположение кнопочки "пуск" (MoveWindow, FindWindow).

Теперь разберем функции API, используемые в данной программке.

MoveWindow

Синтаксис:

BOOL MoveWindow
(
HWND hWnd, // дескриптор окна 
int X, // позиция по горизонтали
int Y, // позиция по вертикали
int nWidth, // ширина
int nHeight, // высота
BOOL bRepaint // флажок перекраски
);

Параметры:

hWnd
Идентифицирует окно.
X
Устанавливает новую позицию левой стороны окна.
Y
Устанавливает новую позицию верхней части окна.
nWidth
Устанавливает новую ширину окна.
nHeight
Устанавливает новую высоту окна.
bRepaint
Определяет, должно ли окно быть перекрашено. Если этот параметр - ИСТИНА (TRUE), окно принимает сообщение WM_PAINT. Если параметр - ЛОЖЬ(FALSE), никакого перекрашивания какого-либо сорта не происходит. Это применяется к рабочей области, нерабочей области (включая строку заголовка и линейки прокрутки) и любой части родительского окна, раскрытого в результате перемещения дочернего окна. Если этот параметр - ЛОЖЬ(FALSE), прикладная программа должна явно аннулировать или перерисовать любые части окна и родительского окна, которые нуждаются в перерисовке.

Возвращаемые значения
Если функция завершилась успешно, возвращается значение отличное от нуля. Если функция потерпела неудачу, возвращаемое значение - ноль.

Замечания
Если параметр bRepaint - ИСТИНА (TRUE), Windows посылает сообщение WM_PAINT оконной процедуре немедленно после перемещения окна (то есть функция MoveWindow вызывает функцию UpdateWindow). Если bRepaint - ЛОЖЬ(FALSE), Windows помещает сообщение WM_PAINT в очередь сообщений, связанную с окном. Цикл сообщений посылает сообщение WM_PAINT только после диспетчеризации всех других сообщений в очереди. Функция MoveWindow посылает в окно сообщения WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE и WM_NCCALCSIZE.

Замечание, касаемо Delphi.

В Delphi функция MoveWindow возвращает тип boolean, тоесть, true или false;
 

FindWindowEx

Синтаксис:
 

function FindWindowEx(Parent, Child: HWND; ClassName, WindowName: PChar): HWND;

Описание:

Возвращает хендл окна. Находит окна по классу или имени окна, в отличие от FindWindow работает с дочерними окнами, начиная с того хендл которого передан в параметре Child.

Параметры
Parent: Хендл родительского окна, в дочерних окнах которого будет производиться поиск.

Если Parent равен nil, то родительским окном будет рабочий стол Windows.

Child: хендл дочернего окна начиная с которого будет производиться поиск. Поиск происходит в Z-последовательности(верхнее-нижнее). Дочернее окно, должно быть прямым потомком родительского окна.
Если Child равен nil, то поиск начнется с первого дочернего окна.
Если Parent и Child равны nil, то поиск идет среди всех окон верхнего уровня.

ClassName: Строка содержащая имя класса или атом указывающий на строку с именем класса (созданные функциями RegisterClass или RegisterClassEx). Если это атом, то он должен быть глобальным(см. функцию GlobalAddAtom). Значение атома помещается в младшее слово, старшее должно быть нулем.

WindowName: Строка содежащая имя(заголовок) окна. Если значение этого параметра равно Nil, то совпадающими со строкой считаются все имена окон.

Возвращаемые значения
В случае успеха возвращается дескриптор окна, которое имеет заданные имя класса и имя окна.
В случае неудачи возвращается Nil. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .
 

FindWindow

Функция FindWindow извлекает дескриптор окна верхнего уровня, имя класса и имя окна которого соответствуют заданным строкам. Эта функция не ищет дочерние окна. Эта функция не выполняет регистрозависимый поиск.

Чтобы найти дочерние окна, начинающиеся с заданного дочернего окна, используют функцию FindWindowEx

Синтаксис

HWND FindWindow(

LPCTSTR lpClassName, // указатель на имя класса
LPCTSTR
lpWindowName // указатель на имя окна

);

Параметры

lpClassName

[in]Указатель на строку с нулевым символом в конце, которая определяет имя класса или класс атома, который создается предварительным вызовом функции RegisterClass или RegisterClassEx. Идентифицирует строку имени класса. Атом младшим словом параметра lpClassName; старшее слово должно быть нулевое.

Если параметр lpClassName указывает на строку, он устанавливает имя класса окна. Имя класса может быть любое имя, зарегистрированное функцией RegisterClass или RegisterClassEx, или любым из предопределенных имен классов органов управления.

lpWindowName

[in] Указывает на строку с нулевым символом в конце, которая определяет имя окна (заголовок окна). Если этот параметр - ПУСТО (NULL), соответствуют имена всех окон.

Возвращаемые значения

Если функция завершилась успешно, возвращаемое значение - дескриптор окна, которое имеет заданное имя класса и имя окна.

Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительные данные об ошибках, вызовите функцию GetLastError.

Замечания

Если параметр lpWindowName не является значением ПУСТО (NULL), функция FindWindow вызывает функцию GetWindowText, чтобы извлечь имя окна для сравнения. За описанием потенциальной проблемы, которая может возникать при этом, см. Замечания в статье GetWindowText.

Последнее обновление ( 16.11.2011 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги