![]() |
|
|
![]()
|
|
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Создал каркас обычным визардом, там есть такая ф-ия создания дочерних окон:
Вопрос как мне получить HWND нового child'a |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Так CreateNewChild его тебе и вернет, т.е. возвращается CMDIChildWnd*, но у окна получить дескриптор просто: m_hWnd.
-------------------- ... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
т.е
я правильно понял? И еще у меня появился вопрос в MDI при создании дочерних окон появляется меню Window и с ним можно работать, но когда удалть все дочерние окна, а потом снова начать их создавать то Window становится неактивным..Кто нибудь может сталкивлся с этим?? |
|||
|
||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Можно и так. Но вообще-то стоит знать, что член m_hWnd является открытым, и есть еще оператор преобразования, к-й возвращает HWND. Т.е. можно писать еще так:
Со вторым - не сталкивалась. -------------------- ... |
||||
|
|||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
спасибо
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Еще такая проблема, ставлю в PreCreateWindow() cs.lpszName = "Лошадь";, ноль эмоций, ставит имя которое у него в ресурсах...
Подскажите как исправить... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Поправь имя в ресурсах. Долго объяснять, но сначала ставиться твое "лошадь", а потом фрейморк меняет его на имя из ресурсов. Посмотреть можно код функции UpdateFrameTitle (вроде так) и вокруг.
-------------------- ... |
|||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
так то понятно но я хочу ,чтобы при создании нового окна у него было уникальное имя, а не у всех одинаковое..
Это можно обойти/заблочить?? Это сообщение отредактировал(а) vinter - 18.8.2006, 18:08 |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Можно, если пороешься в исходных текстах MFC: там много всяких виртуальных ручек.
Но сначала подумай, может стандартными средствами обойдешься. Обычно, имя окна == имя документа + некоторый стандартный текст. Тебя не устраивает имя документа? Тогда ищи функцию CFrameWnd::OnUpdateFrameTitle и смотри от нее, что можно изменить. -------------------- ... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Спасибо за подсказку!
|
|||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
появился новый вопрос..
при создании дочернего окна, его клентская часть создается так:
m_wndView обьект класса CChildView обьявленный в CСhildFrame... Фрейм создается вот так
теперь вопрос как мне в функции класса CMainFrame получит hWnd, этого окна?? |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Какого окна? ChildFrm? Имеешь в виду, в других функциях?
Ну, например, есть функция CMDIFrameWnd::MDIGetActive(). -------------------- ... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Earnest огромное тебе спасибо, с этим хоть разобрался..
Появился еще один вопрос, есть такая ф-ия
все вроде правильно, а курсор не меняет..Почему такое может происходить |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Я не уверена, что изменение курсора в классе окна как-то влияет на уже созданное окно...
Что ты вообще хочешь сделать? Менять курсор в зависимости от нажатой кнопки? Так это делается по-другому: 1) все возможные курсоры загрузи заранее 2) заведи переменную HCURSOR (или индекс текущего курсора) и присваивай ее на OnToolBar 3) обрабатывай в окне OnSetCursor (ставь свой курсор, в смысле SetCursor) Это сообщение отредактировал(а) Earnest - 25.8.2006, 18:08 -------------------- ... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
100% влияет.. Вот только у меня два новых вопроса появилось, я понял почему не меняется курсор, так как я меняю его не в клиентской части окна. Вопрос как получит hWnd клиентской части. И второй вопрос при изменении курсора фрейма ,изменится ли он при выведении курсора в область фрейма. Спасибо за внимание. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |