|
|
|
Еще один вопрос от ламера
|
|||
|---|---|---|---|
|
#18+
Как сделать, чтобы в ответ на какое-нибудь событие(например, на нажатие кнопки) появлялось окно-рамка, поддерживающее архитектуру документ/вид? или, короче - как сконструировать окно-рамку с поддержкой документ/вид без использования объекта CWinApp? среда VC++ 6.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 16:52 |
|
||
|
Еще один вопрос от ламера
|
|||
|---|---|---|---|
|
#18+
Использовать архитектуру Document/View без использования класса CWinApp, ИМХО, бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 18:38 |
|
||
|
Еще один вопрос от ламера
|
|||
|---|---|---|---|
|
#18+
Чем тебе CWinApp мешает ? Если уже есть DocView, создать App не проблема, наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 23:20 |
|
||
|
Еще один вопрос от ламера
|
|||
|---|---|---|---|
|
#18+
Архитектура Документ-Вид вроде бы выходит за рамки MFC ? Или я уже глючу ? Просто реализовать будет не просто (для поддержания всех стандартных натификационных сообщений и обработчиков). MFC здесь (на мой взгляд) очень уместны. Это конструктор, где основные события, и обработчики их, исполняються стандартно. Вы просто "вкрапливаете" свои расхождения с кодом "по умолчанию". Эту идею MFC очень правильно подал Круглинский. Единственное, что вызывает сложности - это разрастание проекта, наворачивание GUI сверх новыми и модными рюшечками-хрюшечками. Но как правило в следующую версию MFC это уже входит как стандарт. Ситуация ещё становиться хуже, когда Вы пытаетесь вкрячить MFC кусочек в полноценный компонент (например). Порой приходиться "потрошить" очень глубинные обработчики, чтоб какой-нить навороченный контролл вёл себя корректно, при переходе табуляции (например) по кругу :) Другими словами. Если у Вас проект лёгкой или средней тяжести по графике - не заморачивайтесь, юзайте MFC и не парьтесь. Если у Вас целый отдел аналитиков готовит новый GUI, которого в природе ышо не существует; программа состоит из нескольки тысяч классов (добрая половина которых - имеет отношение к GUI) и тестировщики с "верхним чутьём" на баги - то придёться попотеть, аназначно. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 11:45 |
|
||
|
Еще один вопрос от ламера
|
|||
|---|---|---|---|
|
#18+
Наверное, я плохо объяснил ситуацию. Для создания диалогового окна и его вызова достаточно нескольнких строк: <Название класса для этого диалога> 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 случаях, для третьего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2033070]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 445ms |

| 0 / 0 |
