Oprava: Uplatnit v Appui1.cpp řádku 215 v aplikaci MFC SDI/MDI

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:193102
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Při pokusu o modální okno bez výslovně určení mateřský v příkazu obslužnou rutinu aplikace MFC SDI/MDI, kde rámeček okna zničen v rutině příkazu před zobrazením modální okno, můžete obdržet výrazu v CCmdTarget::GetRoutingFrame_() (Appui1.cpp čáry: 215) ladění vytvoří.

Ve verzi sestavení aplikace může modálního okna chovat podobně jako nemodální oken. To také bude v případě při aktualizaci aplikace MFC z Visual C++ 5.0 Visual C++ 6.0 (obě verze aplikace Visual C++ použití knihovny DLL MFC s názvem MFC42.dll).
Příčina
Modální windows nyní pomocí směrování datový člen rámce (m_pRoutingFrame) stavu podprocesu rozhodnout o vlastník v GetSafeOwner(). Problém se, zda CFrameWnd nastaven jako aktuální snímek směrování stav podprocesu je odstraněn, ale stav podprocesu není aktualizován tak, aby odrážel tuto skutečnost.
Řešení
Aktuální snímek směrování stav podprocesu nastavena na hodnotu NULL v destruktoru vaše CFrameWnd odvozené třídy, která je zničen:

CMyFrameWnd::~CMyFrameWnd()   {      if( AfxGetThreadState()->m_pRoutingFrame == this )      {         AfxGetThreadState()->m_pRoutingFrame = NULL;      }   }				
Prohlášení
Společnost Microsoft potvrzuje, že tuto změnu problém v produktech společnosti, které jsou uvedeny na začátku tohoto článku. Tato chyba byla stanovena v aplikaci Visual Studio 6.0 Service Pack 1.

Chcete-li, aby získat tuto aktualizaci service pack, přečtěte si:
Další informace
Tento problém týká rámeček okna MFC může být typu CFrameWnd, CMDIFrameWnd, CMDIChildWnd a COleIPFrameWnd.

Modální okna MFC ovlivněny jsou:
  • Dialogové okno
  • CPropertySheet
  • Karta vlastností OLE [OleObject::DoVerb(OLEIVERB_PROPERTIES) vyvolaný prostřednictvím [ASCII 150]]
  • COleBusyDialog
  • Pole zprávy [vyvolat pomocí AfxMessageBox()]
  • Modální okno MAPI [při volání MAPISendMail()]
  • Dialogové okno připojení ovladače SQL [při volání SQLDriverConnect()]

Kroky pro reprodukci chování

  1. MFC exe, který je aplikace založená na MDI generovat pomocí AppWizard.
  2. Pomocí ClassWizard OnCloseDocument CDocument třídy generovaných AppWizard přepsat.
  3. Podle zde uvedené, upravte členské funkce OnCloseDocument:
          void CMyDoc::OnCloseDocument()      {         CDocument::OnCloseDocument();         AfxMessageBox("The Document is Closed");      }					
  4. Vytvoření a spuštění aplikace.
  5. Klepněte v nabídce Soubor na příkaz Zavřít.
Výsledků: Zobrazí se následující chybová zpráva:
"Ladění uplatnění se nezdařilo! Soubor: Appui1.cpp řádku: 215 ".
Chcete-li tento problém v případě bylo uvedeno výše, přidejte následující kód v destruktoru pro CChildFrame:

CChildFrame::~CChildFrame()   {      if( AfxGetThreadState()->m_pRoutingFrame == this )      {         AfxGetThreadState()->m_pRoutingFrame = NULL;      }   }				


(c) Microsoft Corporation 1998, všechna práva vyhrazena. Příspěvky Bret Bentzinger, Microsoft
Odkazy
Další informace o aktualizacích service Pack pro aplikaci Visual Studio získáte v následujících článcích v databázi Microsoft Knowledge Base:
194022Visual Studio 6.0 služby balíky, co, kde, proč
194295Jak zjistit, zda je nainstalována aktualizace service pack pro sadu Visual Studio
193009INFORMACE: Visual Studio 6.0 Service Pack 1 Readme
Připojte MfcDocView

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 193102 - Poslední kontrola: 03/01/2014 05:47:12 - Revize: 4.2

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbqfe kbbug kbdocview kbfix kbvc600sp1fix kbvs600sp1fix kbvs600sp2fix KB193102 KbMtcs
Váš názor