C/Visual C - Cerrar un Doc????

 
Vista:

Cerrar un Doc????

Publicado por Nelek (816 intervenciones) el 11/07/2006 12:42:06
Hola a todos,

Ya he conseguido mas o menos lo que queria. Ya tengo una veriable que me indica el numero de documentos abiertos que tengo. Cuando le digo que cree un nuevo documento, logro evaluar la variable y modificarla, pero lo que me falta es como narices cierro el documento abierto. Os pongo lo que he hecho:

En el StdAfx.cpp, me he declarado la variable: int p_nDocs = 0;

Luego en el CFPSDoc::OnNewDocument (), lo que hago es:

BOOL CFPSDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;

extern int p_nDocs;
if (p_nDocs != 0)
{
//CloseDocs (); //opcion 1
//OnCloseDocument (); //opcion 2
AfxMessageBox ("Ya tienes uno abierto");
p_nDocs = 0;
OnNewDocument ();
}
else
{
//... //otras inicializaciones
p_nDocs = 1;
AfxMessageBox ("Aqui no hay docs abiertos todavia");
}

return TRUE;
}
//Esto es el codigo de la opcion 1
void CFPSDoc::CloseDocs()
{
CDocTemplate *pTempDocT;
CFPSDoc tempDoc;
CDocument *pTempDoc;

pTempDoc = &tempDoc;
pTempDocT->CloseAllDocuments (FALSE);
}

:::::::::::::::::::::::.

Tanto en uno como en otro caso recibo el mismo mensaje de fallo en un MessageBox:

Mensaje: "Untreated exemption in FPS.exe: 0xC0000005 Access Violation"

La diferencia esta a donde me remite al aceptar, con la opcion 1 me remite a:
pTempDocT->CloseAllDocuments (FALSE);

y con la opcion 2 me remite a la linea:
OnNewDocument ();
O sea que ya he visto el AfxMessageBox de que hay mas docs abiertos

Alguien me puede orientar como puedo hacer para cerrar el documento anterior sin recibir ese fallo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder