Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Meter CView en CFrameWnd ( MFC )

Estas en el tema de Meter CView en CFrameWnd ( MFC ) en el foro de C/C++ en Foros del Web. Hola ! Tengo un problema desde varios días con MFC y no encuentro solución alguna por internet. El problema es el siguiente: Tengo entendido que ...
  #1 (permalink)  
Antiguo 22/08/2011, 12:39
Avatar de sephirot47  
Fecha de Ingreso: marzo-2011
Ubicación: BCN
Mensajes: 54
Antigüedad: 13 años, 9 meses
Puntos: 9
Pregunta Meter CView en CFrameWnd ( MFC )

Hola !

Tengo un problema desde varios días con MFC y no encuentro solución alguna por internet. El problema es el siguiente:

Tengo entendido que el CView es, por así decirlo, el interior de una ventana( todo excepto los bordes ).
Lo que quiero hacer es crear una clase que herede de CView( llamale CMyView), con su propio método OnDraw, y añadir un objeto de CMyView a una CFrameWnd.

Lo que me ocurre es que no encuentro ningún método para cambiar la CView de una CFrameWnd...bueno, sí, encontré la función SetActiveView(); pero me da errores...

Os pongo el código:

Código C++:
Ver original
  1. #include <afxwin.h>
  2. #include <afx.h>
  3.  
  4. class MyFrame : public CFrameWnd{
  5.  
  6. public:
  7.  
  8.     MyFrame(){
  9.        
  10.         Create(0, TEXT("Hello World !"));
  11.         ShowWindow(SW_NORMAL);
  12.  
  13.         MyView* mv = new MyView();
  14.  
  15.         SetActiveView(mv); //Esta línea no sé si está bien :S
  16.     }
  17.  
  18. };
  19.  
  20. class MyView : public CView{
  21.  
  22. public:
  23.  
  24.     MyView(){
  25.        
  26.     }
  27.  
  28.     ~MyView();
  29.  
  30.     void OnDraw( CDC *pDC ){
  31.    
  32.         //Dibujamos un cuadrado rojo de 100x100 ( por hacer algo )
  33.  
  34.         HDC hdc = pDC->GetSafeHdc();
  35.         FillRect(hdc, CRect(0,0, 100, 100), CBrush(RGB(255, 0, 0)) );
  36.  
  37.         ////////////
  38.        
  39.         return CView::OnDraw(pDC);
  40.     }
  41. };
  42.  
  43. class MyApp : public CWinApp{
  44.  
  45. public:
  46.  
  47.     int InitInstance(){
  48.  
  49.         MyFrame *f = new MyFrame();
  50.         m_pMainWnd = f;
  51.  
  52.         return 1;
  53.     }
  54. };
  55.  
  56. MyApp a;

Muchas gracias por adelantado...y si no encontráis la solución, por favor, explicadme un poco lo que es el CView, que no me entero mucho

GRACIAS !!!
__________________
Todo lo que tiene un inicio tiene un final inevitable...

¡ No olvides darme karma si te fui útil ^^ !
  #2 (permalink)  
Antiguo 22/08/2011, 13:40
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: Meter CView en CFrameWnd ( MFC )

Desconozco la respuesta, pero si el problema es de compilación solamente, recomiendo usar los tipos después de definirlos, o declararlos y luego usarlos.

osea
Código C++:
Ver original
  1. class MiClaseNueva;   // declaracion
  2. class OtraClase {
  3.      ...
  4.      MiClaseNueva variable;
  5. };
  6.  
  7. class MiClaseNueva {   // definicion
  8. };
o bien

Código C++:
Ver original
  1. class MiClaseNueva {   // definicion
  2. };
  3.  
  4. class OtraClase {
  5.      ...
  6.      MiClaseNueva variable;
  7. };

en tu caso, eso pasa particularmente con la clase MyView
  #3 (permalink)  
Antiguo 23/08/2011, 01:26
Avatar de sephirot47  
Fecha de Ingreso: marzo-2011
Ubicación: BCN
Mensajes: 54
Antigüedad: 13 años, 9 meses
Puntos: 9
Respuesta: Meter CView en CFrameWnd ( MFC )

Gracias CalgaryCorpus...eso me solucionó algunos errores, pero en realidad aún no sé como hacer lo de meter la View en la Frame ( ni siquiera sé si se puede ), seguiré buscando por ahí xD

Una pregunta...Dónde hay manuales de MFC ? Porque llevo un montón de rato buscando por ahí y no encuentro ni uno :(
__________________
Todo lo que tiene un inicio tiene un final inevitable...

¡ No olvides darme karma si te fui útil ^^ !

Última edición por sephirot47; 23/08/2011 a las 01:49

Etiquetas: mfc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:19.