Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
14-59411
Vad
2002-10-31 03:42
2002.11.18
Зачистка анкет.


1-59081
Наталья С.
2002-11-06 00:12
2002.11.18
Открытие фала


3-59052
ComDiv
2002-10-29 17:32
2002.11.18
Долго формируется запорс


1-59138
vixic
2002-11-06 11:50
2002.11.18
регистрация!


3-59066
Leoni
2002-10-30 16:52
2002.11.18
Не работает фильтр в компонентах ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский