Прилипание окон
От: Rusland  
Дата: 15.04.05 13:27
Оценка:
Нужно реализовать "прилипание" окон к границам desktopa на Delphi или Builder-e как в Winampe-e (то есть при приближении окна к границе ближе чем на 20 пикселей нужно переместить окно на край). Нужен готовый код, а не примерные объяснения как это делается. Вопрос вроде простой, но сколько не ищу примеров, ничего пока не нашел. Фактически координаты определить не трудно, например для левого края:

private
{ Private declarations }
procedure SlideWindow(var Message: TMessage); message WM_WINDOWPOSCHANGING;
....
procedure TForm1.SlideWindow(var Message: TMessage);
var WorkArea:TRect;
WinPos:TRect;
StickAt:Integer;
begin
StickAt:=20; // расстояние до границы
GetWindowRect(Form1.Handle,WinPos); //определяем left, top, width, height окна
SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0); // получаем свободное пространство десктопа
if(abs(WorkArea.Left — WinPos.Left)<=StickAt) then // если до левой границы меньше 20 пикселей
begin
WinPos.Left:=WorkArea.Left; // WinPos.Left получает значение границы — 0
end;
// а что вот дальше делать?
....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.