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

Вниз

Окно по центру экрана.   Найти похожие ветки 

 
Б   (2009-12-07 15:36) [0]

Здрасти!

Есть ли такая функция, которая размещает окно ровно по центру экрана? (Окно не на VCL)
Или самому расчитывать?


 
clickmaker ©   (2009-12-07 15:39) [1]

> самому расчитывать?

ага
на халяву есть только у диалогов. DialogBox() - DS_CENTER в стилях


 
йцукен   (2009-12-07 15:43) [2]


> Б   (07.12.09 15:36) 

А чего там расчитывать?
Left := (Screen.Width div 2) - (Width div 2);
Top := (Screen.Height div 2) - (Height div 2);


 
Б   (2009-12-07 15:45) [3]


> А чего там расчитывать?


Не ну конечно расчитывать там мало, но всё таки. А то вруг есть. :)


 
йцукен   (2009-12-07 15:45) [4]

А, не VCL. Ну получить разрешение текущего монитора/десктопа, тоже дело не хитрое, Будет домашним заданием ;)


 
Б   (2009-12-07 16:06) [5]

> А, не VCL. Ну получить разрешение текущего монитора/десктопа, тоже дело не хитрое, Будет домашним заданием ;)

Я, конечно, пока только студент-первокурсник, но не такой уж и тупак. ;)


GetSystemMetrics(SM_CXSCREEN)/GetSystemMetrics(SM_CYSCREEN);



 
Б   (2009-12-07 16:13) [6]

Посмотрел как сделано в VCL-форме.
Метод SetPostion -> TWinControl.ReCreateWnd ->  Perform(CM_RECREATEWND, 0, 0).
Я так понимаю окно пересоздаётся.
Смотрю приватный метод CreateWnd, а в нём po-XXX - флаги даже не трогаются. Чёт найти не могу, как это делается в VCL.


 
clickmaker ©   (2009-12-07 16:17) [7]

они трогаются в SetWindowToMonitor


 
Б   (2009-12-07 16:19) [8]


> они трогаются в SetWindowToMonitor


А... ну теперь всё понятно. ;)


 
Б   (2009-12-07 16:28) [9]


> Left := (Screen.Width div 2) - (Width div 2);


Воспользовавшись свойствами дроби:

(GetSystemMetrics(SM_CXSCREEN) - Width) div 2


 
йцукен   (2009-12-07 16:29) [10]


> Б   (07.12.09 16:28) [9]

Зачет ;)


 
Б   (2009-12-07 16:33) [11]


> Зачет ;)


Пасиба. ;)


 
MBo ©   (2009-12-07 16:37) [12]

(6 div 2) - (3 div 2) <> (6 - 3) div 2


 
clickmaker ©   (2009-12-07 16:40) [13]

значит, низачот )


 
Б   (2009-12-07 16:42) [14]


> (6 div 2) - (3 div 2) <> (6 - 3) div 2


Не, у меня окна должны быть кратны 2-ке. +-1.
Зачёт? ;)


 
Б   (2009-12-07 16:46) [15]

Или так:


 X:= round((GetSystemMetrics(SM_CXSCREEN) - Width) / 2);
 Y:= round((GetSystemMetrics(SM_CYSCREEN) - Height) / 2);


 
Б   (2009-12-18 00:10) [16]


> значит, низачот )


Да и ладно с этип пикселем. ;)


 
0x00FF00   (2009-12-18 00:28) [17]

Дабы не использовать затратный DIV, рекомендую shr 1 =)
А плюс-минус пиксель это, имхо, сущая мелочь.


 
Б   (2009-12-18 00:30) [18]


> Дабы не использовать затратный DIV, рекомендую shr 1 =)
> А плюс-минус пиксель это, имхо, сущая мелочь.


Точняк! =)
Да и хрен с этим пикселем.


 
Anatoly Podgoretsky ©   (2009-12-18 08:58) [19]


> Дабы не использовать затратный DIV, рекомендую shr 1 =)

С каких пор DIV 2 затратный, не думай что в Дельфи дурной оптимизатор.


 
Б   (2009-12-18 10:12) [20]


> С каких пор DIV 2 затратный, не думай что в Дельфи дурной
> оптимизатор.


Говорят сдвиг быстрее.


 
DVM ©   (2009-12-18 10:36) [21]


> Говорят сдвиг быстрее.

ты собрался миллион раз в секунду окно по центру позиционировать?


 
Б   (2009-12-18 10:42) [22]


> ты собрался миллион раз в секунду окно по центру позиционировать?


Надо сделать привычкой ставить сдвиг везде где это уместно.
В данном случае выйгрыша как такового нет, но в графикие, обработке растров и проч. "дорогих" операциях - почему бы и нет?
И ещё, говоря про сдвиг, имелось ввиду его большая скорость вообще.



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

Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
15-1260406003
XXL
2009-12-10 03:46
2010.02.21
Ищу иконки кнопок клавиатуры


15-1260782130
Максимильянов
2009-12-14 12:15
2010.02.21
кодировка в Opera


2-1261467325
pg81
2009-12-22 10:35
2010.02.21
Как передать адрес метода из dll в приложение и присвоить его соб


15-1260281530
KilkennyCat
2009-12-08 17:12
2010.02.21
Логин и пароль. Какие могут быть подводные камни?


2-1261399078
webpauk
2009-12-21 15:37
2010.02.21
Получить значение поля предидущей записи в DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский