Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Mfc

Iniciado por Pogacha, 12 de Enero de 2005, 12:52:44 PM

« anterior - próximo »

Pogacha

 Ya todos lo sabemos, las MFC son una basura y merecen morir .... (soy nuevo en esto, nunca las he usado excepto para un simple dialogo)

Pero ahora me ha tocado hacer el editor para mi framework 2d y uso un SDI con el CDocumentView modificado para ser una ventana de OGL.

Pregunta:
Como hago un Dialog dockeable en un SDI?.
Mi primera impresion fue hacer el dialog en el resource editor y luego con el classwizard asignarle la clase base CDialogBar, pero esta no esta !!!, no se si es normal que no este, me he fijado en el QRadiant y lo usa como si hubiese sido creado con el classwizard.
Me da mucha paja hacer una clase entera desde CControlBar o CWnd, para empezar tendria que rescribir la mitad del codigo del afx para poder adaptarlos pero no tengo ni idea de como empezar siquiera con esto.
Otra que me queda es hacer en el resource editor el dialogo y despues creo con CDialogBar::Create() un cuadro pasandole el IDD_MIDIALOGODOCKEABLE y entonces me lo crea, pero de ahí no se como acceder sino por CWnd *GetDlgItem(int nIDD).
Alguien puede orientarme, hay otros caminos?, o de estos dos cual seria mas facil?, donde hay info o tuts?

Saludos y gracias

Haddd

 Odio las MFC. Me curré un editor que estaba bastante bien, pero era una verdadera locura. Y como cambiaras algo que se podía modificar con el editor y tu lo cambiabas editando el fichero... (nooo)

Bueno, siento decírtelo, pero pasa a .Net. Por lo menos el editor en .NET. Es facilísimo, como debe ser, y puedes trabajar con tu propia librería hecha en C++, aunque no sé como se hace.


sés

 Usa Borland C++ Builder :D
Soy indeciso... ¿o no?

Jikan

 

        Sí, usa Borland C++ Builder ó .NET (yo usaría .NET...). Ya que tienes que aprender y de momento el programa es para tí, .NET es la mejor solución.

        Con .NET puedes usar managed C++ (si no quieres aprender C#) y con Visual Studio 2003 se puede hacer el diseño del interfaz de forma visual. En el tiempo que te cuesta aprender cómo se hace con MFC puede que hayas programado la aplicación completa con .NET  :D  

Pogacha

 El Borland C++ Builder es lo maximo para eso (lo estudie en la secundaria), problemas: la licencia cuesta lo que mi casa y ademas pierdo compatibilidad entre librerias.
El .net no logro instalarlo, tampoco me preocupe mucho  :P, pero ya veremos, todo parece apuntar a eso  (grrr), probablemente lo hare con las MFC de todos modos.
Si alguien conoce tuts recomendables ... castellano o ingles da igual.
Saludos.
Edit: Parezco una señora mayor que no quiere largar la maquina de escribir pero bue....

Zaelsius

 Yo he usado las MFC en varios proyectos, y la verdad es que son un pequeño infierno al principio. Se tarda demasiado en ser productivo.

Actualmente ya no les veo ninguna ventaja, es mejor en mi opinión usar C# y Windows Forms. Tambien puedes usar C++ administrado, pero la verdad, no merece la pena si puedes evitarlo(si no estás atado a C++ por alguna razón concreta).

En serio, no aprendas MFC, estamos en el año 2005... en las ofertas de trabajo para juegos ya se empieza a pedir conocimientos de C# y Windows Forms en su lugar.

Si aun así te obstinas en ir contracorriente, no te puedo recomendar ningun tutorial concreto.. la manera más rápida de encontrar lo que buscas es ir a CodeProject o similares y mirar los fuentes de algun proyecto que use la característica o control "x". La MSDN de por sí no ayuda mucho a veces.

_Grey

 Yo tampoco soy experto en MFC, pero estoy haciendo un programilla que usa un DialogBar como una ToolBar, espero que se entienda, y si es eso lo que quieres, asi es como lo hago.

El DialogBar no tiene ninguna clase que le represente, por lo menos no se la cree, simplemente uso un objeto CDialogBar, que esta en la clase CMainFrame, seguramente se creo junto con tu proyecto. No es muy similar a como se hace con las ventanas de dialogo, pero hice otro proyecto con ToolBar's en el cual pasaba igual.

Bueno a lo que vamos, en CMainFrame hay una funcion OnCreate() en la que se crean recursos varios de la aplicacion, las barras para todo vamos!.  hay tienes que crear tu DialogBar como las otras barras asi:

if(!m_DBMiObjetoDialogBar.Create(this,IDD_DIALOGBAR_MI_DIALOG_BAR,CBRS_TOP|CBRS_GRIPPER,AFX_IDW_CONTROLBAR_LAST-1)){
TRACE0("No se pudo crear la barra de dialogo, para trabajar con la vista de clasificacion\n");
return -1;      // fail to create
}


m_DBMiObjetoDialogBar es un objeto CDialogBar que crearas en la clase CMainFrame. Despues para visualizarlo es como con las ToolBar's:

m_DBClasificacion.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_DBClasificacion);
m_DBClasificacion.ShowWindow();


Despues de esto tendras tu DialogBar justo debajo de tu menu.

Para el tema de los mensajes cuando pinches o trabajes en algun control tendras que dirigirlos a alguna clase, podria ser combeniente la que tengas de documento(C*Doc) que es la que trabajara con los datos, o la de vista(C*View) si es para variar la representacion visual que tiene.

Espero que te sirva. Saludos.

Pogacha

 _Grey:
Exactamente eso venia haciendo ... el tema es que no le puedo agregar datos miembros a la clase CDialogBar (pues no es mia ;)), y tengo que acceder a ellos mediante GetDlgItem(), por consiguiente tampoco puedo hacer el data exchange ni ninguna facilidad que tenga las MSN y por poco mas estaria programando para windows 3.11, supongo que lo ideal seria aprender c#, pero ... y mi framework! la verdad es que no se que pensar ya.

Estoy atado al C++ por que no puedo comprar nada mas, puedo conseguir cosas piratas pero no quiero trabajar así, no se si tenes que declarar con que haces tu software en algún lado pero prefiero no arriesgarme.

Voy a ver como instalar el VExpress pero no se si podre ... no tengo ni coneccion propia.

Saludos

Vicente

 Hola,

Pogacha, lo que cuentas de que el framework de .NET te da error al instalar, que te pasa exactamente? Es que me parece mu raro, a lo mejor se te puede echar un cable... Un saludo!

Vicente

Vicente

 Hola,

por cierto, yo soy un inutil con MFCs y me han mandado hacer una práctica con ellas. Me han pasado el siguiente tutorial, que de momento para mi está bastante bien, porque me lo explica todo muy mascado, lo mismo para ti es muy básico, pero no se, por si acaso, el tuto se encuentra aquí. Un saludo!

Vicente

Astharoth

 
Hola.

Para MFC's teneis multitud de ejemplos, documentacion y controles (donde poder mirar como se puede hacer tal o cual cosa) en CodeProject .. aunque eso si, os aconsejo C# y WindowsForms tambien para temas de GUI (vamos, he programado tanto lo uno como lo otro y no hay color).

En cuanto a "interactividad" entre C# Managed y "otro codigo" .. bueno, no he probado nunca a usar un interface de C++ unmanaged desde C#, pero lo que si se puede hacer sin ningun problema es declarar los prototipos de funciones de "C" de una DLL unmanaged y usarlos desde C#.

Un Saludete.

MA]Mestre

 
CitarYa todos lo sabemos, las MFC son una basura y merecen morir

Yo lo se, incluso opino lo contrario.

AK47

 He aqui un CDialog dockable: http://www.codeproject.com/docking/sizecbar.asp
Yo lo he usado y es mu simple :D

shephiroth

 Wenas.

Si tienes algun problema al instalar el framework, quizás sea problema del internet explorer....el framework 1.1 necesita la version 5.5 y el 1.2 necesita del 6.0...........esto de que ciertos programas tengan dependencias de otros >_<

SALUDOS ^^

Pogacha

 Bien, logre instalar el VSExpress C#, pero no logro hacer mucho todavia,  cerca de un mes atras habia probado instalarlo y me dijo que necesitaba el SP2 y que no se que y no me dejo, probe dos o tres veces y abandoné, pero ahora me lo instalo derecho, el problema es que lo puedo instalar solo en maquinas que tengan conexion a internet, y en casa no tengo  :( .
Sobre los dialogos dockeables estoy utilizando el CDialogBar como dijo __grey, pero es mas trabajoso acceder a los datos y eventos, de todos modos es derecho, pense que me iba a encontrar mas topes, pero no..., por ahora se deja programar, al parecer las MFC dan tumbos al primer momento que empiesas a usarlo.

AK47:
CitarHe aqui un CDialog dockable: http://www.codeproject.com/docking/sizecbar.asp
Yo lo he usado y es mu simple 
Gracias, ya lo baje ..., a ver si lo puedo implementar.

MA]Mestre:
CitarYo lo se, incluso opino lo contrario.
Espero no haberte ofendido, es que cuando uno se choca una pared lo primero que hace es putear al que tiene mas cerca.

Saludos.  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.