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

crear un menu de barra en C ??

Estas en el tema de crear un menu de barra en C ?? en el foro de C/C++ en Foros del Web. Hola foro.. ( felicidades a todos por navidad ) Alguien conoce como hacer los famosos menues de barra que existian en a montones en la ...
  #1 (permalink)  
Antiguo 22/12/2008, 13:51
 
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 10 meses
Puntos: 0
crear un menu de barra en C ??

Hola foro.. ( felicidades a todos por navidad )

Alguien conoce como hacer los famosos menues de barra que existian en a montones en la epoca del DOS..??, una vez llegue a ver un programa que los generaba, pero.. ya ni me acuerdo como se llamaba...

salu2
  #2 (permalink)  
Antiguo 24/12/2008, 13:28
 
Fecha de Ingreso: mayo-2008
Ubicación: Chile
Mensajes: 189
Antigüedad: 16 años
Puntos: 3
Respuesta: crear un menu de barra en C ??

si te sirve, aqui hay un ejemplo de como crear en WINDOWS.

main.c
Cita:
#include <windows.h>

#include "ids.h"

/* Declaración del procedimiento de ventana */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* Manipulador de ventana */
MSG mensaje; /* Mensajes recibidos por la aplicación */
WNDCLASSEX wincl; /* Estructura de datos para la clase de ventana */

/* Estructura de la ventana */
wincl.hInstance = hInstance;
wincl.lpszClassName = "NUESTRA_CLASE";
wincl.lpfnWndProc = WindowProcedure; /* Esta función es invocada por Windows */
wincl.style = CS_DBLCLKS; /* Captura los doble-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Usar icono y puntero por defector */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* Sin menú */
wincl.cbClsExtra = 0; /* Sin información adicional para la */
wincl.cbWndExtra = 0; /* clase o la ventana */
/* Usar el color de fondo por defecto para la ventana */
wincl.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND);

/* Registrar la clase de ventana, si falla, salir del programa */
if(!RegisterClassEx(&wincl)) return 0;

/* La clase está registrada, crear la ventana */
hwnd = CreateWindowEx(
0, /* Posibilidades de variación */
"NUESTRA_CLASE", /* Nombre de la clase */
"Ejemplo 003", /* Texto del título */
WS_OVERLAPPEDWINDOW, /* Tipo por defecto */
CW_USEDEFAULT, /* Windows decide la posición */
CW_USEDEFAULT, /* donde se coloca la ventana */
544, /* Ancho */
375, /* Alto en pixels */
HWND_DESKTOP, /* La ventana es hija del escritorio */
LoadMenu(hInstance, "Menu"),
hInstance, /* Manipulador de instancia */
NULL /* No hay datos de creación de ventana */
);

/* Mostrar la ventana */
ShowWindow(hwnd, SW_SHOWDEFAULT);

/* Bucle de mensajes, se ejecuta hasta que haya error o GetMessage devuelva FALSE */
while(TRUE == GetMessage(&mensaje, NULL, 0, 0))
{
/* Traducir mensajes de teclas virtuales a mensajes de caracteres */
TranslateMessage(&mensaje);
/* Enviar mensaje al procedimiento de ventana */
DispatchMessage(&mensaje);
}

/* Salir con valor de retorno */
return mensaje.wParam;
}

/* Esta función es invocada por la función DispatchMessage() */
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) /* manipulador del mensaje */
{
case WM_COMMAND:
switch(LOWORD(wParam)) {
case CM_PRUEBA:
MessageBox(hwnd, "Comando: Prueba", "Mensaje de menú", MB_OK);
break;
case CM_SALIR:
MessageBox(hwnd, "Me voy!", "Mensaje de menú", MB_OK);
PostQuitMessage(0); /* envía un mensaje WM_QUIT a la cola de mensajes */
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0); /* envía un mensaje WM_QUIT a la cola de mensajes */
break;
default: /* para los mensajes de los que no nos ocupamos */
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
ids.h
Cita:
#define CM_PRUEBA 100
#define CM_SALIR 101
main.rc
Cita:
#include "ids.h"

Menu MENU
BEGIN
POPUP "&Principal"
BEGIN
MENUITEM "&Prueba1", CM_PRUEBA
MENUITEM "&Prueba2", CM_PRUEBA
MENUITEM "&Prueba3", CM_PRUEBA
MENUITEM SEPARATOR
MENUITEM "&Salir", CM_SALIR
END
END
(ESTE EJEMPLO LO ENCONTRE EN CONCLASE.NET)
Ojalá te sirva
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 13:37.