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

Вниз

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

 
Б   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
2-1261124358
Burger
2009-12-18 11:19
2010.02.21
Удаление экземпляра объекта


3-1234909887
Вопрощающий
2009-02-18 01:31
2010.02.21
C++ и SQLConnection - не прибивается процесс приложения


4-1229348213
Wadimka
2008-12-15 16:36
2010.02.21
Есть чужое приложение и есть на нем непонятные кнопки


15-1260394219
Юрий
2009-12-10 00:30
2010.02.21
С днем рождения ! 10 декабря 2009 четверг


11-1211744515
Vinum
2008-05-25 23:41
2010.02.21
Как сделать диалог