24/12/2008, 13:28
|
| | Fecha de Ingreso: mayo-2008 Ubicación: Chile
Mensajes: 189
Antigüedad: 16 años, 7 meses 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 |