Главная страница
    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-1260394219
Юрий
2009-12-10 00:30
2010.02.21
С днем рождения ! 10 декабря 2009 четверг


11-1190008553
Nikfel
2007-09-17 09:55
2010.02.21
Как добавить изображение в TKolPopupMenu.


2-1261143805
TStas
2009-12-18 16:43
2010.02.21
Ошибка создания MDI формы


15-1260687545
Урсулапов_
2009-12-13 09:59
2010.02.21
Как программно отключить и подключить устройство USB?


1-1237987586
Валигози
2009-03-25 16:26
2010.02.21
Как прервать консольное приложение по Ctrl+C ?





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