Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Alien-Z

#131
Una panda de estafadores, eso es lo que son, en España tenemos una conexión penosa y por precios disparatados, ¿cómo es posible cobrar 47 € por un 1 MB?, pues asi es como está la situación en muchas zonas del país. Esperad a que empiecen a cerrar páginas a diestro y siniestro con lo de la ley Sinde, el número de usuarios caerá en picado.
#132
Redes / Re: No abren los puertos del router
5 Septiembre 2011, 20:18 PM
Cita de: SixToes en  5 Septiembre 2011, 18:59 PM
Alien, una pregunta te conectas directamente desde el modem?
Si es así, tienes que indicarle al puerto que valla hacia esa Ip... a lo mejor la pusistes mal o si quieres poner otra lo puedes hacer desde ver conexiones de red...

Saludos

Si, conecto directamente desde el modem, y si te refieres a poner la IP aqui si lo tengo bien:



En fin, por ahora no es estrictamente necesario abrirlos asi que si no hay más ideas lo dejaré por el momento y ya veré cómo lo hago más adelante. Gracias por vuestro tiempo, Saludos.
#133
Redes / Re: No abren los puertos del router
5 Septiembre 2011, 02:31 AM
He probado a usar el puerto con varios programas como me ha aconsejado SixToes, pero sigue sin ir.

CitarFíjate si el firewall no bloquea actividad en ese puerto, también..

Saludos ^^

No lo tengo activado, ni firewall ni AV ni nada por el estilo.

¿Alguna idea más de por qué no se abre el puerto?, gracias de antemano. Saludos.
#134
Redes / Re: No abren los puertos del router
4 Septiembre 2011, 21:24 PM
Te he entendido, quieres decir que una vez abierto el puerto debo ejecutar el programa que lo vaya a usar para que funcione.

Lo pruebo y te comento. Gracias por la sugerencia, saludos.
#135
Redes / No abren los puertos del router
4 Septiembre 2011, 19:06 PM
Buenas:

A ver si me podéis ayudar en un pequeño problemilla, y es que he intentado abrir los puertos de 2 routers diferentes, uno ZyXEL ( he seguido esta guía: http://www.adslzone.net/tutorial-20.2.html ) y otro Netgear. La cosa es que después de seguir todo el procedimiento y de darle a "Save" y a "Apply" el puerto sigue cerrado.

Si alguien sabe cuál puede ser la razón de esto le agradecería que me lo comentara. Saludos.
#136
Foro Libre / Re: Aprendiendo Ajedrez
1 Septiembre 2011, 14:13 PM
Cita de: $Edu$ en  1 Septiembre 2011, 01:34 AM
Me aburri de perder en buho, no he ganado siquiera 1, ahi yo elijo a los con color rojo que supuestamente son los novatos pero juegan mucho, algun lugar donde pueda hablar por chat tambien ya q ese me pido no se cuantas partidas para poder empezar a hablar o sino ser vip, esque chateando encontrare a alguien q recien comienze y puedamos jugar, estaria bueno jugar con alguien de mi nivel asi gano una yo, la otra el, y vamos mejorando los 2

Yo aprendí a jugar relativamente bien echando partidas contra el PC en el ajedrez que viene con Ubuntu xD

De forma online estuve en mundijuegos, aunque hace mucho que no entro.
#137
Buenas:

Siguiendo el consejo de тαптяαпсє me he puesto a explorar Win API y he conseguido crear menus/sub-menus, botones y edit aparte de utilizar algunas funciones para toquetear archivos y leer datos básicos del disco duro (me pudo la curiosidad y pasé de la interfaz a otras cosas  :xD).

Bien, he podido crear eventos a los menus/sub-menus como se puede ver en este ejemplo:

Código (cpp) [Seleccionar]
case WM_COMMAND:
           switch(LOWORD(wParam))
           {
               case item1_menu2:
                   MessageBox(hwnd, "Mensaje de prueba", "Titulo del mensaje", MB_OK);
                   break;
               case item2_menu2:
                   PostQuitMessage(0);
                   break;
           }
           break;


Como sigo algunas guías en inglés por falta de material en castellano no comprendí muy bien lo que hace switch(LOWORD(wParam)) pero puedo suponer razonando que es algo asi como "al darle clic a ...", corregídme si me equivoco.

Ahora, he intentado crear un evento a un botón y un edit pero no lo consigo; aqui os dejo el código (en rojo lo correspondiente al botón, lo demás es lo que te da como plantilla Code::Blocks):

Citar#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "CodeBlocksWindowsApp";

HINSTANCE mi_instance;

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nCmdShow)
{
   HWND hwnd;               /* This is the handle for our window */
   MSG messages;            /* Here messages to the application are saved */
   WNDCLASSEX wincl;        /* Data structure for the windowclass */
   mi_instance = hThisInstance;

   /* The Window structure */
   wincl.hInstance = hThisInstance;
   wincl.lpszClassName = szClassName;
   wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
   wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
   wincl.cbSize = sizeof (WNDCLASSEX);

   /* Use default icon and mouse-pointer */
   wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
   wincl.lpszMenuName = NULL;                 /* No menu */
   wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
   wincl.cbWndExtra = 0;                      /* structure or the window instance */
   /* Use Windows's default colour as the background of the window */
   wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

   /* Register the window class, and if it fails quit the program */
   if (!RegisterClassEx (&wincl))
       return 0;

   /* The class is registered, let's create the program*/
   hwnd = CreateWindowEx (
          0,                   /* Extended possibilites for variation */
          szClassName,         /* Classname */
          "Code::Blocks Template Windows App",       /* Title Text */
          WS_OVERLAPPEDWINDOW, /* default window */
          CW_USEDEFAULT,       /* Windows decides the position */
          CW_USEDEFAULT,       /* where the window ends up on the screen */
          544,                 /* The programs width */
          375,                 /* and height in pixels */
          HWND_DESKTOP,        /* The window is a child-window to desktop */
          NULL,                /* No menu */
          hThisInstance,       /* Program Instance handler */
          NULL                 /* No Window Creation data */
          );

   /* Make the window visible on the screen */
   ShowWindow (hwnd, nCmdShow);

   /* Run the message loop. It will run until GetMessage() returns 0 */
   while (GetMessage (&messages, NULL, 0, 0))
   {
       /* Translate virtual-key messages into character messages */
       TranslateMessage(&messages);
       /* Send message to WindowProcedure */
       DispatchMessage(&messages);
   }

   /* The program return-value is 0 - The value that PostQuitMessage() gave */
   return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   switch (message)                  /* handle the messages */
   {
       case WM_CREATE:
       {
           HWND hwnd_boton1 = CreateWindowEx (NULL, "BUTTON", "Texto", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 100, 100, 90, 25, hwnd, NULL, mi_instance, NULL);
           break;
       }


       case WM_DESTROY:
           PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
           break;
       default:                      /* for messages that we don't deal with */
           return DefWindowProc (hwnd, message, wParam, lParam);
   }

   return 0;
}

Para crear el evento he añadido debajo del WM_CREATE esto otro basándome en los ejemplos de los tutoriales (en rojo señalo dónde me da error):

Citarcase WM_COMMAND:
       {
           if ((HWND)lParam==hwnd_boton1)
           {
               MessageBox(NULL, "Se ha presionado el boton", "Título", MB_OK | MB_ICONEXCLAMATION);
           }
           break;
       }

De ahi me surge otra duda: ¿Por qué para crear eventos en los menus se usa (LOWORD(wParam)) y en botones ((HWND)lParam==hwnd_boton1) si en ambos casos se hace "clic" para activar el evento?.

Gracias por adelantado. Saludos.
#138
Cita de: dvaid en 27 Agosto 2011, 01:11 AM
alguien??

A ver, ¿exactamente qué le ocurre al programa? (no se ejecuta, se ejecuta pero da resultados erróneos...).
#139
Programación C/C++ / Re: Problema con WINAPI
26 Agosto 2011, 21:00 PM
Vaya la leche! las llaves! Es lo que tiene estar concentrado en comprender los nuevos códigos, te acabas olvidando de detalles tontos que has usado 4543 veces.

Gracias Queta. Saludos.
#140
Programación C/C++ / Re: Problema con WINAPI
26 Agosto 2011, 20:23 PM
Estoy haciendo un ejemplo similar y ami me da error en esta parte (señalo en rojo):

CitarLRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   switch (message)                  /* handle the messages */
   {
      case WM_CREATE:
           HMENU menu1 = CreateMenu();
           HMENU menu2 = CreateMenu();
           AppendMenu(menu2, MF_STRING, MN_MENSAJE, "&Mensaje");
           AppendMenu(menu2, MF_STRING, MN_SALIR, "&Salir");
           AppendMenu(menu1, MF_STRING | MF_POPUP, (UINT)menu2, "&MiMenu");
           SetMenu (hwnd, menu1);
           break;
       case WM_DESTROY:
           PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
           break;
       default:                      /* for messages that we don't deal with */
           return DefWindowProc (hwnd, message, wParam, lParam);
   }

   return 0;
}

Este es el código completo:

Código (cpp) [Seleccionar]
#include <windows.h>

const int MN_MENSAJE=1025;
const int MN_SALIR=1026;
//poner el nombre que quieran
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "CodeBlocksWindowsAp p";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nCmdShow)
{
   HWND hwnd;               /* This is the handle for our window */
   MSG messages;            /* Here messages to the application are saved */
   WNDCLASSEX wincl;        /* Data structure for the windowclass */

   /* The Window structure */
   wincl.hInstance = hThisInstance;
   wincl.lpszClassName = szClassName;
   wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
   wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
   wincl.cbSize = sizeof (WNDCLASSEX);

   /* Use default icon and mouse-pointer */
   wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
   wincl.lpszMenuName = NULL;                 /* No menu */
   wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
   wincl.cbWndExtra = 0;                      /* structure or the window instance */
   /* Use Windows's default colour as the background of the window */
   wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

   /* Register the window class, and if it fails quit the program */
   if (!RegisterClassEx (&wincl))
       return 0;

   /* The class is registered, let's create the program*/
   hwnd = CreateWindowEx (
          0,                   /* Extended possibilites for variation */
          szClassName,         /* Classname */
          "Code::Blocks Template Windows App",       /* Title Text */
          WS_OVERLAPPEDWINDOW, /* default window */
          CW_USEDEFAULT,       /* Windows decides the position */
          CW_USEDEFAULT,       /* where the window ends up on the screen */
          544,                 /* The programs width */
          375,                 /* and height in pixels */
          HWND_DESKTOP,        /* The window is a child-window to desktop */
          NULL,                /* No menu */
          hThisInstance,       /* Program Instance handler */
          NULL                 /* No Window Creation data */
          );

   /* Make the window visible on the screen */
   ShowWindow (hwnd, nCmdShow);

   /* Run the message loop. It will run until GetMessage() returns 0 */
   while (GetMessage (&messages, NULL, 0, 0))
   {
       /* Translate virtual-key messages into character messages */
       TranslateMessage(&messages);
       /* Send message to WindowProcedure */
       DispatchMessage(&messages);
   }

   /* The program return-value is 0 - The value that PostQuitMessage() gave */
   return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   switch (message)                  /* handle the messages */
   {
      case WM_CREATE:
           HMENU menu1 = CreateMenu();
           HMENU menu2 = CreateMenu();
           AppendMenu(menu2, MF_STRING, MN_MENSAJE, "&Mensaje");
           AppendMenu(menu2, MF_STRING, MN_SALIR, "&Salir");
           AppendMenu(menu1, MF_STRING | MF_POPUP, (UINT)menu2, "&MiMenu");
           SetMenu (hwnd, menu1);
           break;
       case WM_DESTROY:
           PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
           break;
       default:                      /* for messages that we don't deal with */
           return DefWindowProc (hwnd, message, wParam, lParam);
   }

   return 0;
}



A ver si alguien puede decirme dónde está el fallo. Saludos.