Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.
Диалог создания/выбора нового документа. CNewTypeDlg
A: (Leprecon)
Оригинальная ссылка: нету

Всем, кто хоть раз создавал в MDI приложении больше одного шаблона документа, известна ситуация, когда при запуске приложения или создания нового документа вылезает стандартный МФСишный диалог "Новый документ". В нем вам предлагается выбрать один из созданных вами шаблонов. По этому шаблону приложение создаст новый документ, фрейм и представление для него. Описан этот диалог в файле "docmgr.cpp" - class CNewTypeDlg : public CDialog и нам он в общем-то недоступен. Вот что необходимо для создания собственного диалога выбора нового документа:
1. Создать свой класс менеджера документов.
class CMyDocManager : public CDocManager
 
 {
 
 public:
 
     CMyDocManager();
 
 
 
 public:
 
 
 
 public:
 
 // Overrides
 
     // ClassWizard generated virtual function overrides
 
     //{{AFX_VIRTUAL(CMyDocManager)
 
     public:
 
     virtual void OnFileNew();
 
     //}}AFX_VIRTUAL
 
 
 
 };
2. В нем нам необходима лишь одна виртуальная функция
void CDocManager::OnFileNew();
Именно в ней вызывается стандартный диалог выбора шаблона для нового документа.
3. Необходимо создать свой класс диалога выбора
class CMyNewTypeDlg : public CDialog

4. В функции void CMyDocManager::OnFileNew() вызываем свой диалог:
void CMyDocManager::OnFileNew()
 
 {
 
     if (m_templateList.IsEmpty())
 
     {
 
         TRACE0("Error: no document templates registered with CWinApp.\n");
 
         AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
 
         return;
 
     }
 
 
 
     // Если всего один зарегистрированный шаблон документа,
 
     // то не вызываем диалог выбора, а создаем документ этого типа.
 
     CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetHead();
 
     if (m_templateList.GetCount() > 1)
 
     {
 
         // more than one document template to choose from
 
         // bring up dialog prompting user
 
         CMyNewTypeDlg dlg(&m_templateList);
 
         int nID = dlg.DoModal();
 
         if (nID == IDOK)
 
         {
 
             // Берем указатель на выбранный шаблон документа.
 
             CDocTemplate* pTemplate = dlg.m_pSelectedTemplate;
 
         }
 
     }
 
 
 
     // Создаем новый документ по этому шаблону.
 
     CDocument* pDoc = pTemplate->OpenDocumentFile(NULL);
 
 }
5. Меняем МФСишный менеджер документов на свой. Создание менеджера происходит в функции
void CWinApp::AddDocTemplate(CDocTemplate* pDocTemplate);
void CMyApp::AddDocTemplate(CDocTemplate* pTemplate)
 
 {
 
     if (m_pDocManager == NULL)
 
         m_pDocManager = new CMyDocManager;
 
     m_pDocManager->AddDocTemplate(pTemplate);
 
 }
Примечание:
Если при запуске MDI приложения, новый документ вообще не нужно создавать, то вставьте следующую строчку в функцию InitInstance(), вашего приложения:
    ...........
 
     // Parse command line for standard shell commands, DDE, file open
 
     CCommandLineInfo cmdInfo;
 
     ParseCommandLine(cmdInfo);
 
 
 
     // Dispatch commands specified on the command line
 
     cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; // Вот эту строчку!
 
     if (!ProcessShellCommand(cmdInfo))
 
         return FALSE;
 
     .........
 
 


Если есть какие-то замечания, предложения или что-то еще, то пишите:
leprecon@pisem.net.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS