SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: © Jonathan © en Martes 11 de Mayo de 2004, 19:15

Título: Ventanitas Como Las De Aviso En Msn
Publicado por: © Jonathan © en Martes 11 de Mayo de 2004, 19:15
Hola a todos, queria preguntarles como puedo hacer para crear ventanitas como las que crea el MSN cuando un usuario entra en sesion.

   O que fucniones de las apis debo utilizar.

   Un estilo como el programa que adjunto aqui. Gracias y saludos :hola:
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: The Black Boy en Miércoles 12 de Mayo de 2004, 00:04
Jonathan  de donde sacaste ese programita??  

y  en que esta echo si se puede saber??

Gracias

Un saludos :hola:
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: © Jonathan © en Miércoles 12 de Mayo de 2004, 00:40
Creo que en visual C++, mañana te paso el fuente, si lo encuentro. Saludos :hola:
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: JuanK en Miércoles 12 de Mayo de 2004, 01:03
Hola Jonathan..
recuerdas que hace algun tiempo te comente sobre la API de windows y GDI..
pues esto es lo que debes usar... especificamente el GDI.. con eso es refacil.
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: betitono1 en Miércoles 12 de Mayo de 2004, 08:53
Podiras enviar el codigo a lo mejro lo podemos traducir.


Aunque creo que se podira hacer así:

Crear un formulario en tiempo de ejecución y darle la opción de sin bordes y colocar un panel con un tamaño pequeño que se vaya haciendo más grande y con una imagen de fondo, todas sus caracteristicas serían controladas por un formulario principal de generacion.


Si tengo tiempo tratare de hacerlo y si me resulta lo envio aqui, sino espero que me ayuden.


Saludos
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: © Jonathan © en Miércoles 12 de Mayo de 2004, 15:08
Hola nuevamente, juank, agradesco la ayuda ue me proporcionas, buscare info acerca del tema... para los demas, aui les adjunto el fuente, si esta en Visual C++ y utiliza API's de windows. Saludos y haber ue podemos hacer para traducirlo. :hola:
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: The Black Boy en Miércoles 12 de Mayo de 2004, 16:52
Gracias Jonathan por el codigo
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: JuanK en Jueves 13 de Mayo de 2004, 08:09
Este es un ejemplo inoficioso y poco eficas, efectivo etc...
de lo que se puede hacer con gdi(si tienes Xp mejor usa gdi+)
Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<windows.h>
  4.  
  5. int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int );
  6. LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
  7. int makeAllScreenWindow(HWND , HINSTANCE , int );
  8.  
  9. char WindowName[]  = "Bitmap";
  10. char WindowTitle[] = "Bitmap";
  11. int x=10, y=10, Hres, Vres, speedy=1, speedx=2;
  12. HDC hdc, hdcMem, hdcMemBackUp;
  13. HGDIOBJ hbm,hbmBK;
  14.  
  15.  
  16. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  17.                 LPSTR lpCmdLine, int nCmdShow )
  18. {
  19.     MSG msg;
  20.    HWND hwnd=NULL;
  21.  
  22.    makeAllScreenWindow(hwnd,hInstance,nCmdShow );
  23.  
  24.    hdc = CreateDC( "DISPLAY", NULL, NULL, NULL );
  25.  
  26.    /*Hres=GetDeviceCaps(hdc, HORZRES);
  27.    Vres=GetDeviceCaps(hdc, VERTRES); */
  28.    Hres=300;
  29.    Vres=300;
  30.  
  31.    hdcMem = CreateCompatibleDC(hdc);
  32.    hdcMemBackUp = CreateCompatibleDC(hdc);
  33.    hbm  = CreateCompatibleBitmap(hdc, Hres, Vres);
  34.    hbmBK = CreateCompatibleBitmap(hdc, Hres, Vres);
  35.    SelectObject(hdcMemBackUp, hbmBK);
  36.    SelectObject(hdcMem, hbm);
  37.  
  38.    BitBlt(hdcMemBackUp,0,0,Hres, Vres  , hdc, 0,0, SRCCOPY);
  39.  
  40.    while( GetMessage( &msg, NULL, 0, 0 ) )
  41.    {
  42.       TranslateMessage( &msg );
  43.       DispatchMessage( &msg );
  44.    }
  45.    BitBlt(hdc,0,0,Hres, Vres  , hdcMemBackUp, 0,0, SRCCOPY);
  46.    DeleteDC( hdcMemBackUp );
  47.    DeleteDC( hdcMem );
  48.    DeleteDC( hdc );
  49.    return( msg.wParam );
  50. }
  51.  
  52. LRESULT CALLBACK WndProc( HWND hwnd, UINT message,  WPARAM wParam, LPARAM lParam )
  53. {
  54.    switch( message )
  55.    {
  56.       case WM_PAINT:
  57.             BitBlt(hdcMem,0,0,Hres, Vres  , hdcMemBackUp, 0,0, SRCCOPY);
  58.       TextOut( hdcMem, 0, 0, "Ejemplo GDI, presione escape para salir",39);
  59.       Rectangle (hdcMem,x,y,x+50,y+50);
  60.  
  61.             if(x+50>Hres)
  62.                speedx*=(-1);
  63.  
  64.             if(y+50>Vres)
  65.                speedy*=(-1);
  66.  
  67.             if(x<=0)
  68.                speedx*=(-1);
  69.             if(y<=0)
  70.                speedy*=(-1);
  71.             x+=speedx;
  72.             y+=speedy;
  73.              
  74.             if(!BitBlt(hdc,0,0, Hres, Vres, hdcMem, 0,0, SRCCOPY))
  75.                TextOut( hdc, 0, 0, "Fallo al escribiir en hdc desde hdcmem",33);
  76.       return 0L;
  77.       break;
  78.       case WM_KEYDOWN:
  79.          switch(wParam)
  80.          {
  81.             case VK_ESCAPE:
  82.                DestroyWindow( hwnd );
  83.             break;
  84.             default:
  85.                break;
  86.          }
  87.       break;
  88.       case WM_DESTROY:
  89.  
  90.          PostQuitMessage( 0 );  
  91.       break;
  92.         default:
  93.          return( DefWindowProc( hwnd, message, wParam, lParam ) );
  94.     }
  95.     return(0);
  96. }    
  97.  
  98. int makeAllScreenWindow(HWND hwnd, HINSTANCE hInstance, int nCmdShow)
  99. {
  100.    WNDCLASSEX wcx;
  101.    
  102.    wcx.cbSize = sizeof( WNDCLASSEX );
  103.    wcx.style = CS_HREDRAW | CS_VREDRAW;
  104.    wcx.lpfnWndProc = WndProc;
  105.    wcx.cbClsExtra = 0;
  106.    wcx.cbWndExtra = 0;
  107.    wcx.hInstance = hInstance;
  108.        
  109.    wcx.hIcon = LoadIcon(NULL, IDI_WINLOGO);
  110.    wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
  111.    wcx.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
  112.    wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
  113.    wcx.lpszClassName = WindowName;
  114.    wcx.lpszMenuName = NULL;
  115.  
  116.    if( !RegisterClassEx( &wcx ) )
  117.       return( FALSE );
  118.  
  119.    hwnd = CreateWindowEx(
  120.         WS_EX_OVERLAPPEDWINDOW,
  121.       WindowName, WindowTitle,
  122.       WS_POPUP              ,
  123.       0, 0,1, 1, NULL, NULL,
  124.       hInstance, NULL);
  125.  
  126.     if( !hwnd )
  127.        return( FALSE );
  128.    ShowWindow( hwnd, nCmdShow );
  129.    return TRUE;
  130. }
  131.  
  132.  
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: JuanK en Jueves 13 de Mayo de 2004, 16:12
bueno hay cosxas del codigo que puse que no se usan para nada, pero eso lo tendran que averiguar porqu aca en la oficina no puedo recompilar nada de eso.
Título: Re: Ventanitas Como Las De Aviso En Msn
Publicado por: © Jonathan © en Viernes 14 de Mayo de 2004, 00:05
Hola juank, muy bueno el ejemplo que has posteado, ahora entiendo como escrbir en el escritorio... Gracias amigo! . Saludos :hola: