![]() |
|
|
![]()
|
|
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Имеется диалог, в нем есть контрол. В некоторых ситуациях мне необходимо срыть контрол, а на его месте нарисовать окошко, производное от CWnd.
Делаю приблизительно так. В вунксии OnInitDialog() пишу следующий код
В результате внутри диалога появляется объект моего класса, размером равный размеру контрола, но расположенный не на месте его, а в левом верхнем углу диалога. где я напутал?? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Блин, только что нашел путь решения, но мне он не нравится. Вместо GetClientRect() теперь использую следующую конструкцию:
Но структура WINDOWPLACEMENT содержит в основном инфу, касающуюся минимизации, максимизации, нормального состояния окна, которое я как раз использую, и прочую фигню. Мне кажется, что такое решение не очень рациональное, ведь должно же быть решение проблемы что называется в одно действие, а у меня такое чувство, что я из пушки по воробьям пальнул, а потом еще котлован ложкой выкопал, а не эксковатором. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Ты куда получаешь координаты? В rect? Тогда что такое r.left? Может rect.left?
Кроме того, есть такая функция ScreenToClient(&rect); - попробуй использовать. Кстати, насчет экскаватора я бы не переживал. Классы вообще вещь громоздкая. Посчитай, сколько нужно всего выполнить, чтобы инициализировать ту же кнопку. Ну да, конечно! Я и сам сначала не заметил. GetClientRect(&rect); !!!! В качестве параметра функция принимает указатель на CRect. Так что амперсанд не забываем... Это сообщение отредактировал(а) kometa_triatlon - 23.5.2005, 20:40 -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| Dreamer_0x01 |
|
||||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Проюовал и так и так, причем в MSDN нашел, что оператор LPRECT преобразует CRect в RECT таким образом, что амперсанда не требуется. Кроме того, при двойной буферезации (помнишь пример) там было именно без амперсанда, и все работало, так что не в этом дело.
да, очепятался ;) rect.left, все правильно.
Вот это мне как раз и не нравится. Раз уж классов до дури написано, то не просто так их писали, и наверное предполагается их использование именно в таком виде, как предполагалось разработчиками, а не через одно место. Хотя, ни раз убеждался, что именно через это место у них часто все и делается ;) Просто под винды я программирую мало, основные мои проги пишу для микроконтроллеров, а вот там каждый бит кода на счету, отсюда привычка писать код более оптимальный, если это в пределах разуменого и доступного для понимания. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||||
|
|||||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: нет Всего: 88 |
По-моему так. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Dreamer_0x01
Тебе нужно перевести координаты из клиентской области в область окна. ClientToScreen() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
!!!!!!!!!!!!!!!!!!!! -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Coocky,
kometa_triatlon, Dov - Спасибо!!! -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |