SDI y MDI

kaworu
03 de Abril del 2006
Hola,

Estoy muy acostumbrado a trabajar en aplicaciones basadas en dialogos y ahora tengo que hacer una pequeña que muestre un informe generado externamente y permita imprimirlo, MDI a poder ser aunque me conformo con SDI de momento, pero me haga un lio con las clases que te genera automáticamente el VC++ 6.0.

Hasta el momento he conseguido leer el contenido del fichero en la clase Doc, puesto que tengo entendido que esta debe contener los datos, pero para ello he tenido que cambiar de sitio la función OnFileOpen, el ClassWizard me la habia puesto en CMainFrame, lo que me parece bastante lógico, pero después no sabia como pasarle a la clase Doc que fichero debia leer. Además, después no se como comunicarle a la vista que tenia un informe, he probado el paso de un mensaje própio, pero no lo recibia, asi que de momento me he valido del OnDraw (); y muestra el texto, solo si obligo a llamar al OnDraw, poniendome en otra aplicación y volviendo a esa por ejemplo.

Estoy seguro de que todo esto debe ser más fácil pero no doy con ello y no encuentro nada que me ayude. ¿Alguien sabe que debo hacer o de algún manual?

Gracias.

kike.ado
03 de Abril del 2006
ok esta funcion de la clase marco (mainFrame) te retorna un puntero al objeto documento activo, el tema documento activo es necesario en una MDI ya que puede tener varios documentos, pero es aplicable a una SDI.

GetActiveDocument();

debes hacer una conversion de tipo si quieres usar datos especificos de tu clase documento.

Para lo segundo puedes usar una funcion miembro del documento para hacer que se actualicen los cambios en todas sus vistas asociadas, es decir invocar la funcion OnUpdate de la vista para que se llame a OnDraw.

UpdateAllViews(NULL);

puedes usarla con el puntero obtenido anteriormente con GetActiveDocument, el valor NULL como parametro le indica que se deben actualizar todas las vistas.

a ver si esto te sirve....