Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Еще один вопрос от ламера / 5 сообщений из 5, страница 1 из 1
04.07.2005, 16:52
    #33148513
Slip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще один вопрос от ламера
Как сделать, чтобы в ответ на какое-нибудь событие(например, на нажатие кнопки) появлялось окно-рамка, поддерживающее архитектуру документ/вид? или, короче - как сконструировать окно-рамку с поддержкой документ/вид без использования объекта CWinApp? среда VC++ 6.0
...
Рейтинг: 0 / 0
04.07.2005, 18:38
    #33148771
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще один вопрос от ламера
Использовать архитектуру Document/View без использования класса CWinApp, ИМХО, бесполезно.
...
Рейтинг: 0 / 0
04.07.2005, 23:20
    #33149003
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще один вопрос от ламера
Чем тебе CWinApp мешает ? Если уже есть DocView, создать App не проблема, наверное.
...
Рейтинг: 0 / 0
05.07.2005, 11:45
    #33149608
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще один вопрос от ламера
Архитектура Документ-Вид вроде бы выходит за рамки MFC ? Или я уже глючу ? Просто реализовать будет не просто (для поддержания всех стандартных натификационных сообщений и обработчиков). MFC здесь (на мой взгляд) очень уместны. Это конструктор, где основные события, и обработчики их, исполняються стандартно. Вы просто "вкрапливаете" свои расхождения с кодом "по умолчанию". Эту идею MFC очень правильно подал Круглинский. Единственное, что вызывает сложности - это разрастание проекта, наворачивание GUI сверх новыми и модными рюшечками-хрюшечками. Но как правило в следующую версию MFC это уже входит как стандарт. Ситуация ещё становиться хуже, когда Вы пытаетесь вкрячить MFC кусочек в полноценный компонент (например). Порой приходиться "потрошить" очень глубинные обработчики, чтоб какой-нить навороченный контролл вёл себя корректно, при переходе табуляции (например) по кругу :)

Другими словами.
Если у Вас проект лёгкой или средней тяжести по графике - не заморачивайтесь, юзайте MFC и не парьтесь. Если у Вас целый отдел аналитиков готовит новый GUI, которого в природе ышо не существует; программа состоит из нескольки тысяч классов (добрая половина которых - имеет отношение к GUI) и тестировщики с "верхним чутьём" на баги - то придёться попотеть, аназначно.


с уважением
(круглый)
...
Рейтинг: 0 / 0
06.07.2005, 12:06
    #33151856
Slip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще один вопрос от ламера
Наверное, я плохо объяснил ситуацию.
Для создания диалогового окна и его вызова достаточно нескольнких строк:
<Название класса для этого диалога> dlg;
dlg.DoModal();
Для создания окна-рамки без поддержки архитектуры документ\вид достаточно написать класс CMainFrame как делает AppWizard при создании SDI - приложения без поддержки архитектуры документ\вид, в нем создать переменную-член типа CChildView( class CChildView: public CWnd), а потом написать (где угодно)
CMainFrame* pWnd = new CMainFrame;
wnd->LoadFrame(...);
wnd->ShowWindow(SW_SHOW);
wnd->UpdateWindow();
А при создании SDI-приложения с поддержкой архитектуры документ\вид AppWizard создает код типа
//в CMyApp::InitInstance
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate);
//...
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

Первые два варианта работают если их вставить, например, в функцию обработки нажатия на клавишу, а последний - нет, т.к. он привязан к объекту CWinApp. Суть вопроса была в том, как сделать то же, что и в первых 2 случаях, для третьего.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Еще один вопрос от ламера / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]