Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

How to do as ICQ   Найти похожие ветки 

 
123000 ©   (2002-11-09 14:08) [0]

Подскажите как приклейть окно моей проги к краю экрана, как это делает аська если её окно перетащить к краю экрана?


 
False_Delirium ©   (2002-11-09 16:32) [1]

B Обрабатываем сообщения.

Получаем размеры экрана Screen(Width, Height)... при создании окна и при изменении разрешения.
Сделаем переменную, определяющую склеивание, чтобы произ ходило оно один раз за вхождение... нужно множество Cliped ... cllpdLeft, clpdRigth, clpdTop, clpdBottom ;

WM_RESIZE // определить размер окна, чтобы не делать это каждый раз при перемещении окна.

var
Rect: TRect ;
WindowPl: TWindowPlacement ;
begin
WindowPl.Length := SizeOf(TWindowPlacement) ;
GetWindowPlacement(WHandle, @WindowPl) ;
Rect := WindowPlacement.rcNormalPosition ;
GetWindowRect(WHandle, Rect) ;
LeftP := Rect.Left ;
TopP := Rect.Top ;
RightP := Rect.Right ;
BottomP := Rect.Bottom ;
end ;


WM_MOVING
// Приклеиваем за 20px до края.
if (LeftP in [0..20]) and not (clpdLeft in IsCliped) then
begin
SetWindowPos(...) // приклеиваем к левому краю ;
IsCliped := IsCliped or clpdLeft ;
end IsCliped := IsCliped and not clpdLeft ;

if (TopP in [0..20]) and not (clpdTop in IsCliped) then
begin
SetWindowPos(...) // кверху
IsCliped := IsCliped or clpdTop ;
end IsCliped := IsCliped and not clpdTop ;

if (RightP in [Screen.Width-20..Screen.Width]) and not
(clpdRight in IsCliped) then
begin
SetWindowPos(...)//к правому краю
IsCliped := IsCliped or clpdRight ;
end IsCliped := IsCliped and not clpdRight ;

if (BottomP in [Screen.Width-20..Screen.Width]) and not (clpdBottom in IsCliped) then
begin
SetWindowPos(...)//книзу
IsCliped := IsCliped or clpdBottom ;
end IsCliped := IsCliped and not clpdBottom ;

Желательно всё перепроверить в WM_MOVE


Вроде бы ничего не упустил... Сам не пробовал и алгоритм можно покрасивее реализовать.
Все интервалы [..] лучше заменить двойным условием, писать было лень.:)


 
False_Delirium ©   (2002-11-09 16:34) [2]

множество IsCliped



Страницы: 1 вся ветка

Текущий архив: 2002.11.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
3-59018
alxx
2002-10-29 14:47
2002.11.18
Роли в MS SQL Server 7.0


1-59087
iNew
2002-11-07 17:52
2002.11.18
Где оштбка? Делаю так:


1-59089
Alex
2002-11-06 10:28
2002.11.18
SaveDialog1 и timetostr(time)


1-59241
down
2002-11-06 19:37
2002.11.18
OemToChar, CharToOem для произвольных кодировок


3-59020
RedKat
2002-10-28 17:47
2002.11.18
Большой цикл с запросами к БД Access