Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT




Метод InitInstance класса CMultiApp


Чтобы изучить измененный программный код, просмотрите метод InitInstance класса CMultiApp. Мы не стали приводить здесь первоначальный вид метода InitInstance класса CMultiApp, так как во первых, он уже был нами описан ранее в разделе “Приложение Multi”, а во вторых, изменения в методе InitInstance заключаются в добавлении единственного блока следующего за комментарием CG.

В этом боле CG: сначала выполняется обработка командной строки приложения. Для этого используются метод ParseCommandLine, уже описанный ранее.

Он записывает обработанную строку приложения в объект cmdInfo класса CCommandLineInfo. Для нас важно, если в командной строке приложения не указано имени файла, в элемент m_bShowSplash объекта cmdInfo записывается значение TRUE, а если указано - FALSE.

Затем выполняется вызов метода EnableSplashScreen класса CSplashWnd. В качестве параметра ему передается элемент m_bShowSplash объекта cmdInfo. Он определяет, надо ли при запуске приложения показывать заставку. Если m_bShowSplash содержит значение TRUE, заставка показывается, если FALSE - нет.

На этом блок CG:, добавленный компонентом Splash Screen, завершается. Далее идет уже знакомый вам текст метода InitInstance. Его описание вы найдете в разделе “Приложение Multi”:

BOOL CMultiApp::InitInstance()

{

   // CG: Следующий блок добавлен при вставке в проект

   // компонента Splash Screen

   {

      // Выполняем стандартную обработку командной строки

      // приложения

      CCommandLineInfo cmdInfo;

      ParseCommandLine(cmdInfo);

      CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);

   }

#ifdef _AFXDLL

   Enable3dControls();

#else

   Enable3dControlsStatic();

#endif

   // Загружаем файл конфигурации

   LoadStdProfileSettings();

   // Создаем шаблон документа

   CSingleDocTemplate* pDocTemplate;

   pDocTemplate = new CSingleDocTemplate(

      IDR_MAINFRAME,

      RUNTIME_CLASS(CMultiDoc),

      RUNTIME_CLASS(CMainFrame),

      RUNTIME_CLASS(CMultiView));

   // Регистрируем шаблон документа

   AddDocTemplate(pDocTemplate);

   // Выполняем стандартную обработку командной строки

   // приложения

   CCommandLineInfo cmdInfo;

   ParseCommandLine(cmdInfo);

   // Обрабатываем командную строку приложения

   if (!ProcessShellCommand(cmdInfo))

      return FALSE;

   return TRUE;

}




Содержание  Назад  Вперед