C/Visual C - Menús con iconos

 
Vista:
sin imagen de perfil

Menús con iconos

Publicado por Edgar Muñoz (14 intervenciones) el 17/07/2006 22:24:38
Saludos a todos.

¿Alguien sabe como puedo crear menús con iconos?

También necesito que me ayuden a crear un menú emergente (de los que aparecen al hacer click derecho sobre algún lugar de la pantalla) con iconos por supuesto.

De antemano gracias por su ayuda.
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

RE:Menús con iconos

Publicado por Nelek (816 intervenciones) el 18/07/2006 12:42:58
Menu con iconos? te refieres a dentro de las opciones del menu? o a la parte izquierda del menu?

respecto a lo del menu emergente (popup) echa un vistazo en la seccion de CWnd, que hay opciones de la creacion (ahora no recuerdo excactamente cual) que te indican si es para ventanas normales o popups. Echa un vistazo en la ayuda que te aseguro que hay informacion al respecto.

Siento no poder ayudarte mas pero es una de las cosas que aun no he tocado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Menús con iconos

Publicado por Edgar Muñoz (14 intervenciones) el 18/07/2006 22:56:42
Me refiero a los iconos que aparecen en la parte izquierda de cada item.

Con todo, te agradezco por tu ayuda, al menos ya tengo una idea de como trabajar con los popup.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Menús con iconos

Publicado por Nelek (816 intervenciones) el 19/07/2006 10:40:33
Nunca me habia planteado meter iconos en mis opciones de menu, tu te refieres a hacer algo como lo de fichero-nuevo y cosas asi (pero en el menu, no en la tollbar).

En Visual C++ si que es posible hacerlo, ya que los subapartados del menu son al fin y al cabo "casi" botones, y como tal se pueden acoplar simbolos e iconos a el, lo que me parece es que no vas a poder hacerlo con ayuda del asistente como para los botones, sino que te tendras que editar a pelo el resources.rc o crearte el menu por codigo directamente.

Respecto al popup, la funcion que te comentaba es CreateWindowEx tiene mas parametros que la normal y es la que se utiliza para popups, listbox y demas elementos mas "avanzados".

Si te acabas aclarando con ello, por favor postea. Que yo intento una crear una ListBox desde codigo y no logro hacerlo. Mejor dicho, crearse se crea, pero luego no esta por ningun lado, y yo diria que estoy usando la funcion bien (aunque tpco puedo estar seguro).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Menús con iconos

Publicado por Edgar Muñoz (14 intervenciones) el 19/07/2006 22:03:45
Para ser más específico, quiero hacer un menú al estilo de Microsoft Word (no estoy promocionando este software, por si acaso, pero es lo único que se me ocurrió). Si sabes como hacerlo y me puedes dar una mano o si tienes algún link te agradecería mucho.

En lo referente al Listbox, disculpa, no te puedo ayudar. Soy un novato en esto de Visual C++.

Gracias por tu atención

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Menús con iconos

Publicado por Nelek (816 intervenciones) el 21/07/2006 11:07:55
Vamos a ver,

en el area de trabajo hay una pestaña (se supone en el centro) que pone "resources" y ahi estan, los dialog, los menus, los iconos... etc.

Por defecto suele haber dos menus, uno para cuando se inicia el programa con un documento abierto y el otro para cuando no hay ningun documento abierto.

Situandote en las casillas en blanco, tienes la oportunidad de meterle el ID del comando que quieres llamar desde esa opcion, luego tienes opciones que te permiten meterle texto, la explicacion que sale en la barra de status (abajo del todo) cuando pasas por encima del menu y demas parametros.

La cosa seria crearte tu menu conforme lo quieres, y luego el añadirle el icono a cada opcion que la necesite. Si te he de ser sincero lo del icono no tengo ni idea de como se hace porque no lo he mirado siquiera. Pero el resources.rc y el resources.h pueden ser editados en codigo.

Una manera de hacerlo seria que te crees un dialog box, le asignas un menu y un boton, luego al boton le añades un icono usando el editor de recursos del programa, que te permite meterle bitmaps, simbolos o iconos. Despues miras como se ha modificado el codigo escrito de los ficheros resources.rc y -.h y tratas de meterle el icono al "boton" del menu por codigo en lugar de por el asistente.

Siento no poder ser mas especifico. Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Menús con iconos

Publicado por Nelek (816 intervenciones) el 21/07/2006 13:21:12
Perdona, se me fue de la cabeza que lo que querias es hacer un menu POPUP, asi que olvidate de lo que te dije arriba en el ultimo mensaje.

Para el POPUP se usa el CreateWindowEx, con todo el mogollon de parametros que tiene, y (creo recordar que) el primero es "lpszClassName", en el es donde le puedes meter el icono.

A la hora de crear una ventana normal seria (esto viene de mi propio programa):

BOOL CHelloWnd::Create(LPCTSTR szTitle, LONG style /* = 0 */,
const RECT& rect /* = recDefault */,
CMDIFrameWnd* parent /* = NULL */)
{
// Register a custom WndClass and create a window.
// This must be done because CHelloWnd has a custom icon.

LPCTSTR lpszHelloClass =
AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, LoadCursor(NULL, IDC_ARROW), (HBRUSH)(COLOR_WINDOW+11), LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_HELLO)));

return CMDIChildWnd::Create(lpszHelloClass, szTitle, style, rect, parent);
}

Donde IDI_HELLO es un icono propio, no de los standards.

Luego simplemente llamo al metodo desde la View como sigue:

void CWndTestMVCView::OnExampleHello()
{
RECT myRect; myRect.left = 50; myRect.top = 50; myRect.right = 500; myRect.bottom = 500;

CHelloWnd *pHelloWnd = new CHelloWnd;
if (!pHelloWnd->Create(_T("Hello"), WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, myRect, NULL))
return;

// the default PostNcDestroy handler will delete this object when destroyed
}

Y con eso se carga la nueva ventana, con el icono especificado en el otro lado y demas.

Espero que entre este ejemplo y la documentacion de la otra funcion puedas sacar algo en claro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar