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

Překlady článku Překlady článku
ID článku: 193102 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

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:
http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx

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

Vlastnosti

ID článku: 193102 - Poslední aktualizace: 1. března 2014 - Revize: 4.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Foundation Class Library 4.2 na těchto platformách
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Klíčová slova: 
kbnosurvey kbarchive kbmt kbqfe kbbug kbdocview kbfix kbvc600sp1fix kbvs600sp1fix kbvs600sp2fix KB193102 KbMtcs
Strojově přeložený článek
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

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com