C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Создание еще одного фрейма для документа / MFC / Visual C++

Создание еще одного фрейма для документа
A: (Leprecon)
Оригинальная ссылка: нету

Бывает так, что одного фрейма для документа в MDI приложении недостаточно. Например если нужно отобразить один и тот же документ двумя разными видами. Лучше всего для этого создать еще один шаблон документа, в котором указать другой класс вида или класс внутреннего фрейма. Делается это в функции BOOL CWinApp::InitInstance(). Очень удобно завести для всех шаблоноб документов переменные в классе приложения:
class CMyApp : public CWinApp
{
.......
// document templates
public:
    CMultiDocTemplate* m_pDocTemplate1;
    CMultiDocTemplate* m_pDocTemplate2;
.......
};
Тогда при создании, каждый шаблон запоминается в соответствующей переменной:
BOOL CMyApp::InitInstance()
{
...........
    m_pDocTemplate1 = new CMultiDocTemplate(
        IDR_FRAME2TYPE,
        RUNTIME_CLASS(CMyDoc),
        RUNTIME_CLASS(CChildFrame), // custom MDI child frame
        RUNTIME_CLASS(CMyView1));
    AddDocTemplate(m_pDocTemplate1);

    m_pDocTemplate2 = new CMultiDocTemplate(
        IDR_FRAME2TYPE,
        RUNTIME_CLASS(CMyDoc),
        RUNTIME_CLASS(CChildFrame), // custom MDI child frame
        RUNTIME_CLASS(CMyView2));
    AddDocTemplate(m_pDocTemplate2);
...........
}
После этого создать еще один фрейм для документа проще простого:
void CChildFrame::OnNewFrame() 
{
    CMyApp* pApp = (CFrame2App*) AfxGetApp();
    CFrameWnd* pFrame = pApp->m_pDocTemplate1->CreateNewFrame(GetActiveDocument(), this);
    pFrame->ShowWindow(SW_SHOW);
}
Если есть какие-то замечания, предложения или что-то еще, то пишите:
leprecon@pisem.net.