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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SOLUCIONADO] GUI y Consola en una misma app
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] GUI y Consola en una misma app  (Leído 1,690 veces)
Xephiro

Desconectado Desconectado

Mensajes: 239



Ver Perfil WWW
[SOLUCIONADO] GUI y Consola en una misma app
« en: 3 Agosto 2012, 04:05 am »

Consulta, es posible hacer que una aplicación se pueda ver en modo consola y GUI solo por ejemplo enviando un argumento al mi app que indique con cual de ambas quiero comenzar?

Si es posible alguien me puede dar una mano? que he tratado pero la app no me muestra la ventana.


Ya encontré una solución simple y a gusto respecto a mi pregunta...  ;-)


« Última modificación: 3 Agosto 2012, 06:30 am por Xephiro » En línea

Xephiro

Desconectado Desconectado

Mensajes: 239



Ver Perfil WWW
Re: [SOLUCIONADO] GUI y Consola en una misma app
« Respuesta #1 en: 3 Agosto 2012, 06:35 am »

Para aquellos que necesiten algo similar dejo el código (No es nada estético ni complicado.)

Código
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
  8.  
  9. char szClassName[ ] = "WindowsApp";
  10.  
  11. int main (int count, char* args[])
  12. {
  13.    bool flag = true;
  14.  
  15.    ...........
  16.  
  17.    if(flag)
  18.    {
  19.        HWND hwnd;
  20.        MSG messages;
  21.        WNDCLASSEX wincl;
  22.  
  23.        /* The Window structure */
  24.        wincl.hInstance = NULL;
  25.        wincl.lpszClassName = szClassName;
  26.        wincl.lpfnWndProc = WindowProcedure;
  27.        wincl.style = CS_DBLCLKS;
  28.        wincl.cbSize = sizeof (WNDCLASSEX);
  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;
  33.        wincl.cbClsExtra = 0;
  34.        wincl.cbWndExtra = 0;                      
  35.        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
  36.  
  37.        if (!RegisterClassEx (&wincl))
  38.            return 0;
  39.  
  40.        hwnd = CreateWindowEx (
  41.               0,                   /* Extended possibilites for variation */
  42.               szClassName,         /* Classname */
  43.               "Windows App",       /* Title Text */
  44.               WS_OVERLAPPEDWINDOW, /* default window */
  45.               CW_USEDEFAULT,       /* Windows decides the position */
  46.               CW_USEDEFAULT,       /* where the window ends up on the screen */
  47.               544,                 /* The programs width */
  48.               375,                 /* and height in pixels */
  49.               HWND_DESKTOP,
  50.               NULL,
  51.               NULL,
  52.               NULL
  53.               );
  54.  
  55.        ShowWindow (hwnd, 1);
  56.  
  57.        while (GetMessage (&messages, NULL, 0, 0))
  58.        {
  59.            TranslateMessage(&messages);
  60.            DispatchMessage(&messages);
  61.        }
  62.    }
  63.    else
  64.    {
  65.        cout<<":D"<<endl;
  66.        cin.get();
  67.    }
  68.  
  69.    return 0;
  70. }
  71.  
  72. LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  73. {
  74.    switch (message)
  75.    {
  76.        case WM_DESTROY:
  77.            PostQuitMessage (0);
  78.            break;
  79.        default:
  80.            return DefWindowProc (hwnd, message, wParam, lParam);
  81.    }
  82.  
  83.    return 0;
  84. }


PD: Es obvio que mas estético y cómodo se vería separar toda la creación de la ventana en un método aparte :D

Saludos....


« Última modificación: 3 Agosto 2012, 06:48 am por Xephiro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Bash] ejecutar una aplicacion en la misma consola del script
Scripting
z_ane_666 1 4,398 Último mensaje 2 Marzo 2012, 19:30 pm
por moikano→@
Ayuda con marco en consola solucionado
Programación C/C++
nolasco281 3 2,003 Último mensaje 27 Enero 2014, 10:02 am
por nolasco281
hacer una cout en la misma linea de cin Solucionado « 1 2 »
Programación C/C++
nolasco281 14 11,659 Último mensaje 29 Enero 2014, 13:48 pm
por vangodp
hiperbinculos en consola de C++ (casi solucionado) « 1 2 »
Programación C/C++
nolasco281 16 5,279 Último mensaje 5 Febrero 2014, 18:19 pm
por x64core
Mover este > y barras en la misma pantalla consola « 1 2 »
.NET (C#, VB.NET, ASP)
Meta 10 4,412 Último mensaje 28 Marzo 2020, 18:16 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines