Форум: "Начинающим";
Текущий архив: 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