![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окно по центру экрана. [D7, XP]
Б © (2009-12-07 15:36:00)Здрасти!
Есть ли такая функция, которая размещает окно ровно по центру экрана? (Окно не на VCL)
Или самому расчитывать?
Б (2009-12-18 10:42:00) [1]
> ты собрался миллион раз в секунду окно по центру позиционировать?
Надо сделать привычкой ставить сдвиг везде где это уместно.
В данном случае выйгрыша как такового нет, но в графикие, обработке растров и проч. "дорогих" операциях - почему бы и нет?
И ещё, говоря про сдвиг, имелось ввиду его большая скорость вообще.
DVM (2009-12-18 10:36:00) [2]
> Говорят сдвиг быстрее.
ты собрался миллион раз в секунду окно по центру позиционировать?
Б (2009-12-18 10:12:00) [3]
> С каких пор DIV 2 затратный, не думай что в Дельфи дурной
> оптимизатор.
Говорят сдвиг быстрее.
Anatoly Podgoretsky (2009-12-18 08:58:00) [4]
> Дабы не использовать затратный DIV, рекомендую shr 1 =)
С каких пор DIV 2 затратный, не думай что в Дельфи дурной оптимизатор.
Б (2009-12-18 00:30:00) [5]
> Дабы не использовать затратный DIV, рекомендую shr 1 =)
> А плюс-минус пиксель это, имхо, сущая мелочь.
Точняк! =)
Да и хрен с этим пикселем.
0x00FF00 (2009-12-18 00:28:00) [6]Дабы не использовать затратный DIV, рекомендую shr 1 =)
А плюс-минус пиксель это, имхо, сущая мелочь.
Б (2009-12-18 00:10:00) [7]
> значит, низачот )
Да и ладно с этип пикселем. ;)
Б (2009-12-07 16:46:00) [8]Или так:
X:= round((GetSystemMetrics(SM_CXSCREEN) - Width) / 2);
Y:= round((GetSystemMetrics(SM_CYSCREEN) - Height) / 2);
Б (2009-12-07 16:42:00) [9]
> (6 div 2) - (3 div 2) <> (6 - 3) div 2
Не, у меня окна должны быть кратны 2-ке. +-1.
Зачёт? ;)
clickmaker (2009-12-07 16:40:00) [10]значит, низачот )
MBo (2009-12-07 16:37:00) [11](6 div 2) - (3 div 2) <> (6 - 3) div 2
Б (2009-12-07 16:33:00) [12]
> Зачет ;)
Пасиба. ;)
йцукен (2009-12-07 16:29:00) [13]
> Б (07.12.09 16:28) [9]
Зачет ;)
Б (2009-12-07 16:28:00) [14]
> Left := (Screen.Width div 2) - (Width div 2);
Воспользовавшись свойствами дроби:
(GetSystemMetrics(SM_CXSCREEN) - Width) div 2
Б (2009-12-07 16:19:00) [15]
> они трогаются в SetWindowToMonitor
А... ну теперь всё понятно. ;)
clickmaker (2009-12-07 16:17:00) [16]они трогаются в SetWindowToMonitor
Б (2009-12-07 16:13:00) [17]Посмотрел как сделано в VCL-форме.
Метод SetPostion -> TWinControl.ReCreateWnd -> Perform(CM_RECREATEWND, 0, 0).
Я так понимаю окно пересоздаётся.
Смотрю приватный метод CreateWnd, а в нём po-XXX - флаги даже не трогаются. Чёт найти не могу, как это делается в VCL.
Б (2009-12-07 16:06:00) [18]> А, не VCL. Ну получить разрешение текущего монитора/десктопа, тоже дело не хитрое, Будет домашним заданием ;)
Я, конечно, пока только студент-первокурсник, но не такой уж и тупак. ;)
GetSystemMetrics(SM_CXSCREEN)/GetSystemMetrics(SM_CYSCREEN);
йцукен (2009-12-07 15:45:00) [19]А, не VCL. Ну получить разрешение текущего монитора/десктопа, тоже дело не хитрое, Будет домашним заданием ;)
Б (2009-12-07 15:45:00) [20]
> А чего там расчитывать?
Не ну конечно расчитывать там мало, но всё таки. А то вруг есть. :)