GetWindowRect
Забодал этот косяк: как окна центровать - так пиши костыли.
Вот что написано во всех мануалах: Цитата:
Ну т.е. для окна с левым верхним углом в 100;50 и размерами 100;100, результат будет left=0 top=0 bottom=150 right=200 Ну блин! Т.е. функция ведёт себя аналогично GetClientRect (которая возвращает координаты в системе отсчёта рабочей области). Оценить левый угол, исходя из разности GetClientRect и GetWindowRect нельзя, т.к. в уравнении участвуют ещё неизвестные параметры, характеризующие толщину границы окна, шапку (её может и не быть), системное меню, статус бар и прочее. При этом в кодах разных прогеров часто встречается код, подразумевающий именно такой результат работы, как описан в учебнике. Запускаю отладку - нули. ЧЯДНТ? mfc: http://www.firststeps.ru/mfc/winapi/r.php?72 !mfc: http://vsokovikov.narod.ru/New_MSDN_...windowrect.htm |
Ответ: GetWindowRect
Если нужно отцентрировать окно, то сначала получаешь его размеры (у тебя уже есть).
Затем получаешь размер декстопа: Код:
int dx = GetSystemMetrics(SM_CXSCREEN); Код:
int x = (dx - width) >> 1; |
Ответ: GetWindowRect
Цитата:
|
Ответ: GetWindowRect
Бинарный сдвиг вправо на указанное число битов.
|
Ответ: GetWindowRect
Цитата:
|
Ответ: GetWindowRect
Деление на два нацело.
|
Ответ: GetWindowRect
Стал искать альтернативные пути.
Сперва хотел через GetWindowInfo получить структуру WINDOWINFO, но оно чего-то заломалось, да и чрезмерно монструозно. Поэтом применил другой костыль. GetWindowPlacement и анализ поля rcNormalPosition структуры WINDOWPLACEMENT Код:
int tx,ty; |
Ответ: GetWindowRect
Цитата:
Я центрирую так: Код:
/* (width, height - размеры окна) */ |
Ответ: GetWindowRect
2wolfhound512
Да, читал про эту функцию, но мне показалось* это ещё большим костылём (могу ошибаться). http://www.firststeps.ru/mfc/winapi/r.php?73 : Цитата:
|
Ответ: GetWindowRect
Цитата:
научити меня нормально этим пользоваться,а то мне проще поделить на 10,чем смешение использовать |
Ответ: GetWindowRect
смешение != смещение
|
Ответ: GetWindowRect
на 10 нельзя
можно только на 8 или на 16 |
Ответ: GetWindowRect
Цитата:
|
Ответ: GetWindowRect
ПОБИТОВО!!
|
Ответ: GetWindowRect
Цитата:
|
Часовой пояс GMT +4, время: 16:59. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot