elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  como crear una ventana con forma a gusto¿? (RESUELTO :D!)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como crear una ventana con forma a gusto¿? (RESUELTO :D!)  (Leído 1,865 veces)
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
como crear una ventana con forma a gusto¿? (RESUELTO :D!)
« en: 19 Enero 2010, 08:50 »



hola estoy tratando de pasar una aplicación que ya diseñe en vb 6.0 a c++. el problema es que no logro darle forma a mi ventana  :-\ .Trabajo con el ide Dev-c++.

  Mi idea es darle forma de un rectángulo redondeado quitando le la barra de caption (el titulo de la ventana + el icono + los botones minimizar cerrar etc.)  en vb solo vasta con cambiar la propiedad del Form BorderStyle a '0' (None), y de ahi le asignaba la region que se me cante  :-*.

 Espero que alguien pueda ayudarme.

                                         saludos <[(x)]>


« Última modificación: 19 Enero 2010, 10:10 por <[(x)]> » En línea

<[(x)]>
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: como crear una ventana con forma a gusto¿?
« Respuesta #1 en: 19 Enero 2010, 08:58 »

Oh dios mío....
te comento, esto es MUY distinto a vb (donde "dibujás software"), acá hacés llamadas a la API de Win directamente o usás alguna librería que lo haga por vos (te aconsejo este camino)

respecto a la segunda opción lo mejor que tenés es Qt : http://qt.nokia.com/products
respecto a la primera, tenés cientos de manuales para hacer GUIs con la API de windows, este es uno : http://winapi.conclase.net/curso/index.php

Saludos ~


En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: como crear una ventana con forma a gusto¿?
« Respuesta #2 en: 19 Enero 2010, 09:04 »

Gracias jaja ya sabia lo de las apis me estoy pasando a c++ por eso mismo me gusta mas me perece mas ... lindo  :xD.

Bueno voy a echarle un vistazo a eso que me dejaste y desp cuentoo  :P gracias nuevamente  ;D.

EI: juntando mensajes.perdon no era mi intencion  :(

 

   :-X
  
 Me salio. jaja no era para tanto no se que tenia que no lo podía hacer  :P

 Tube que inventar la constante STYLE_NONE  :o.

 aka les va el code:
Código
  1. #include <windows.h>
  2.  
  3. #define STYLE_NONE 0xf0000
  4.  
  5. /*  Declare Windows procedure  */
  6. LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
  7.  
  8. /*  Make the class name into a global variable  */
  9. char szClassName[ ] = "WindowsApp";
  10.  
  11. int WINAPI WinMain (HINSTANCE hThisInstance,
  12.                    HINSTANCE hPrevInstance,
  13.                    LPSTR lpszArgument,
  14.                    int nFunsterStil)
  15.  
  16. {
  17.    HWND hwnd;               /* This is the handle for our window */
  18.    MSG messages;            /* Here messages to the application are saved */
  19.    WNDCLASSEX wincl;        /* Data structure for the windowclass */
  20.  
  21.    /* The Window structure */
  22.    wincl.hInstance = hThisInstance;
  23.    wincl.lpszClassName = szClassName;
  24.    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
  25.    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
  26.    wincl.cbSize = sizeof (WNDCLASSEX);
  27.  
  28.    /* Use default icon and mouse-pointer */
  29.    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
  30.    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  31.    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
  32.    wincl.lpszMenuName = NULL;                 /* No menu */
  33.    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
  34.    wincl.cbWndExtra = 0;                      /* structure or the window instance */
  35.    /* Use Windows's default color as the background of the window */
  36.    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
  37.  
  38.    /* Register the window class, and if it fails quit the program */
  39.    if (!RegisterClassEx (&wincl))
  40.        return 0;
  41.  
  42.    /* The class is registered, let's create the program*/
  43.    hwnd = CreateWindowEx (
  44.           0,                   /* Extended possibilites for variation */
  45.           szClassName,         /* Classname */
  46.           "Windows App",       /* Title Text */
  47.           WS_OVERLAPPEDWINDOW, /* default window */
  48.           CW_USEDEFAULT,       /* Windows decides the position */
  49.           CW_USEDEFAULT,       /* where the window ends up on the screen */
  50.           544,                 /* The programs width */
  51.           375,                 /* and height in pixels */
  52.           HWND_DESKTOP,        /* The window is a child-window to desktop */
  53.           NULL,                /* No menu */
  54.           hThisInstance,       /* Program Instance handler */
  55.           NULL                 /* No Window Creation data */
  56.           );
  57.  
  58.    /* Make the window visible on the screen */
  59.  
  60.    long lRet;
  61.    HRGN lRegion;
  62.  
  63.    lRegion = CreateRoundRectRgn(0,0,500,120,15,15);
  64.    SetWindowRgn(hwnd,lRegion,true);
  65.    lRet = GetWindowLongA(hwnd, GWL_STYLE);
  66.    lRet = lRet && ! STYLE_NONE ;
  67.    SetWindowLong(hwnd, GWL_STYLE, lRet);
  68.    SetWindowPos(hwnd, 0, 0, 0, 0, 0,
  69.      SWP_FRAMECHANGED || SWP_NOMOVE ||
  70.      SWP_NOSIZE || SWP_NOZORDER);
  71.    ShowWindow (hwnd, nFunsterStil);
  72.  
  73.    /* Run the message loop. It will run until GetMessage() returns 0 */
  74.    while (GetMessage (&messages, NULL, 0, 0))
  75.    {
  76.        /* Translate virtual-key messages into character messages */
  77.        TranslateMessage(&messages);
  78.        /* Send message to WindowProcedure */
  79.        DispatchMessage(&messages);
  80.    }
  81.  
  82.    /* The program return-value is 0 - The value that PostQuitMessage() gave */
  83.    return messages.wParam;
  84. }
  85.  
  86.  
  87. /*  This function is called by the Windows function DispatchMessage()  */
  88.  
  89. LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  90. {
  91.    switch (message)                  /* handle the messages */
  92.    {
  93.        case WM_DESTROY:
  94.            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
  95.            break;
  96.        default:                      /* for messages that we don't deal with */
  97.            return DefWindowProc (hwnd, message, wParam, lParam);
  98.    }
  99.  
  100.    return 0;
  101. }
  102.  


 emmm si hay alguna cagada jaja dígame ...  :silbar:                    saludos <[(x)]>
« Última modificación: 19 Enero 2010, 10:16 por <[(x)]> » En línea

<[(x)]>
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines