CWinAppEx — перегрузка LoadState()

#mfc #load #state #mdi

#mfc #загрузка #состояние #mdi

Вопрос:

У меня есть приложение MFC MDI, которое раздражающе загружает предыдущее состояние панелей инструментов и т.д., Когда я его запускаю. Я установил

  m_bSaveState = FALSE;
  

в конструкторе приложения … но это не имело никакого эффекта. Итак, я попытался перегрузить метод LoadState(), как в:

     // added this to the MainApp.h file
virtual BOOL LoadState(CWnd* pFrame, LPCTSTR lpszSectionName = NULL );
  

и …

  // added the following to the MainApp.cpp
 BOOL CDrumGenMDIApp::LoadState (CWnd* pFrame, LPCTSTR lpszSectionName )
{
// do nothing to pre-load the state from the Registry
return TRUE;
 }
  

… однако этот метод, похоже, никогда не вызывался. Когда система загружает фреймы, я почти уверен, что она вызывает какой-то профиль LoadState() … но как мне заставить его вызвать мой перегруженный метод?

Спасибо

Ответ №1:

Глядя на файл заголовка, функция, которую вы пытаетесь переопределить, не объявлена виртуальной и не существует?!

Однако следующая функция является виртуальной:

   virtual BOOL LoadState(LPCTSTR lpszSectionName = NULL, CFrameImpl* pFrameImpl = NULL);
  

Я сам этого не пробовал, но теоретически это должно сработать.