FIX: Un overflow dello stack si verifica quando contenitori di controlli ActiveX MFC immettere uno stato di una ricorsione infinita in Visual c ++

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

192942
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
In determinate circostanze, contenitori di controlli ActiveX MFC verranno immesso uno stato di una ricorsione infinita, che porterà a un overflow dello stack. I sintomi di questo quando si modifica la posizione di un sito di controllo, il programma verrà apparentemente si blocca e alla fine di produrre un overflow dello stack (0xC00000FD) eccezione del sistema operativo. L'analisi dello stack è simile al seguente:
   COleControlSite::MoveWindow   COleControl::XOleInPlaceObject::SetObjectRects   COleControl::OnSetObjectRects   COleControlSite::MoveWindow   ...				
Cause
Quando cambia la posizione del sito del controllo, il codice del contenitore modifica la posizione della finestra riflettore (se presente) e i rettangoli tracker (se presente). Il codice di contenitore di controllo chiama infine COleControl::XOleInPlaceObject::SetObjectRects. (Vedere CTLINPLC.CPP nell'origine MFC). SetObjectRects() effettua una chiamata a GetOuterWindow(), che restituisce la finestra riflettore, se presente. Se la variabile di finestra riflettore NULL lo stesso oggetto finestra è restituito, MoveWindow viene quindi chiamato utilizzando l'oggetto di finestra restituito. In questo modo MoveWindow a essere chiamato su se stesso, in un ciclo ricorsivo.
Risoluzione
Una soluzione consiste nel copiare la versione di Visual c ++ 5.0 di Mfc42.dll (versione file: 4.21.7303) della home directory del programma in cui si verifica questo problema. Questa operazione comporta l'automatica di utilizzare la versione precedente di MFC, anziché di Mfc42.dll che si trova nella directory di sistema di Windows.
Status
Microsoft ha confermato che questo un problema in Microsoft i prodotti elencati in questo articolo. Questo bug è stato risolto in Visual Studio 6.0 Service Pack 1.

Per ottenere questo service pack, il seguente sito Microsoft Web: Per ulteriori informazioni su Visual Studio 6.0 Service Pack 1, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
193009File Readme di Visual Studio 6.0 Service Pack 1
194022Visual Studio 6.0 service pack, che cosa, dove, perché
194295Come riconoscere che è installato un service pack di Visual Studio
Informazioni
Questo bug è stato trovato in 8 WordPerfect fornito come parte di Corel Office Suite 8. Questo errore si verifica solo con la versione di Visual c ++ 6.0 di Mfc42.dll.

Warning: This article has been translated automatically

Proprietà

ID articolo: 192942 - Ultima revisione: 02/22/2014 20:09:41 - Revisione: 5.2

  • Microsoft Foundation Class Library 4.2
  • kbnosurvey kbarchive kbmt kbqfe kbbug kbfix kbnoupdate kbvc600sp1fix kbvs600sp1fix KB192942 KbMtit
Feedback