
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
| |||
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 |
| |||
Respuesta: crear un menu de barra en C ?? si te sirve, aqui hay un ejemplo de como crear en WINDOWS. main.c Cita: ids.h#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; } Cita: main.rc#define CM_PRUEBA 100 #define CM_SALIR 101 Cita: (ESTE EJEMPLO LO ENCONTRE EN CONCLASE.NET)#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 Ojalá te sirva |