• Miércoles 20 de Noviembre de 2024, 12:42

Autor Tema:  Modo De Video  (Leído 1887 veces)

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Modo De Video
« en: Lunes 26 de Enero de 2004, 06:37 »
0
Saludos..
estoy haciendo un ejercicio de programacion de lenguaje c,
el problema es que estoy utilizando funciones que solia utilizar para cambiar el modo de video, estas usaban la dos.h.. bien esta libreria ya no existe o mejor ya no funciona para programar en windows xp asi que tambien tenia de hace ya unos años una funcion que hice en assembler que hacia lo mismo , pero no me funciona tampoco..
solo me han funcionado utilizando el compilador DJGPP porque emula el entorno del dos.. pero al compilarlo en visual studio no me funcionan :'(

alguien sabe como hacer para cambiar el modo de video en lenguaje c, utilizando visual studio.net y sin utilizar librerias como allegro o directX... ?'
es decir
alguien sabe como ouedo hacer esto con codigo de bajo nivel...??


cabe aclarar que utilizo windows xp professional.


agradezco cualquier ayuda.

gracias
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Modo De Video
« Respuesta #1 en: Miércoles 28 de Enero de 2004, 03:33 »
0
bueno ..
creo que se debe poder con la api de windows...
ya veremos..
siono con el ddkl de microsoft aunqeu eso implicaria hacer mi propio driver... :@

sigo aceptando ideas... please...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Modo De Video
« Respuesta #2 en: Miércoles 28 de Enero de 2004, 06:18 »
0
solucion:
si a travez de la api de windows utilizando gdi :)

ya he investigado suficiente asi que hasta mañana muchachos
ya no se usa la dos.h pero si windows.h(winapi) alli estan las herramientas que necesito para utilizar los recursos de la maquina.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Modo De Video
« Respuesta #3 en: Martes 3 de Febrero de 2004, 20:27 »
0
bueno, caeria bien que de vez en cuando alguien me ayudara a mi!!!  :unsure:

bueno ya investigue bastantede gdi y de la api de windows, pero no me gusto mucho trabajar asi el modo grafico... es muy 'feo' de usar, aqui un pequeño ejemplo de tantos que hice:
más abajo esta el ejecutable
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=5, speedx=10;
  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.    hdcMem = CreateCompatibleDC(hdc);
  29.    hdcMemBackUp = CreateCompatibleDC(hdc);
  30.    hbm  = CreateCompatibleBitmap(hdc, Hres, Vres);
  31.    hbmBK = CreateCompatibleBitmap(hdc, Hres, Vres);
  32.    SelectObject(hdcMemBackUp, hbmBK);
  33.    SelectObject(hdcMem, hbm);
  34.  
  35.    BitBlt(hdcMemBackUp,0,0,Hres, Vres  , hdc, 0,0, SRCCOPY);
  36.  
  37.    while( GetMessage( &msg, NULL, 0, 0 ) )
  38.    {
  39.       TranslateMessage( &msg );
  40.       DispatchMessage( &msg );
  41.    }
  42.    BitBlt(hdc,0,0,Hres, Vres  , hdcMemBackUp, 0,0, SRCCOPY);
  43.    DeleteDC( hdcMemBackUp );
  44.    DeleteDC( hdcMem );
  45.    DeleteDC( hdc );
  46.    return( msg.wParam );
  47. }
  48.  
  49. LRESULT CALLBACK WndProc( HWND hwnd, UINT message,  WPARAM wParam, LPARAM lParam )
  50. {
  51.    switch( message )
  52.    {
  53.       case WM_PAINT:
  54.             TextOut( hdcMem, 0, 0, "Ejemplo GDI, presione escape para salir",39);
  55.             Rectangle (hdcMem,x,y,x+100,y+100);
  56.  
  57.             if(x+100>Hres)
  58.                speedx*=(-1);
  59.  
  60.             if(y+100>Vres)
  61.                speedy*=(-1);
  62.  
  63.             if(x<=0)
  64.                speedx*=(-1);
  65.             if(y<=0)
  66.                speedy*=(-1);
  67.             x+=speedx;
  68.             y+=speedy;
  69.              
  70.             if(!BitBlt(hdc,0,0, Hres, Vres, hdcMem, 0,0, SRCCOPY))
  71.                TextOut( hdc, 0, 0, "Fallo al escribiir en hdc desde hdcmem",33);
  72.       break;
  73.       case WM_KEYDOWN:
  74.          switch(wParam)
  75.          {
  76.             case VK_ESCAPE:
  77.                DestroyWindow( hwnd );
  78.             break;
  79.             default:
  80.                break;
  81.          }
  82.       break;
  83.       case WM_DESTROY:
  84.  
  85.          PostQuitMessage( 0 );  
  86.       break;
  87.         default:
  88.          return( DefWindowProc( hwnd, message, wParam, lParam ) );
  89.     }
  90.     return(0);
  91. }    
  92.  
  93. int makeAllScreenWindow(HWND hwnd, HINSTANCE hInstance, int nCmdShow)
  94. {
  95.    WNDCLASSEX wcx;
  96.    
  97.    wcx.cbSize = sizeof( WNDCLASSEX );
  98.    wcx.style = CS_HREDRAW | CS_VREDRAW;
  99.    wcx.lpfnWndProc = WndProc;
  100.    wcx.cbClsExtra = 0;
  101.    wcx.cbWndExtra = 0;
  102.    wcx.hInstance = hInstance;
  103.        
  104.    wcx.hIcon = LoadIcon(NULL, IDI_WINLOGO);
  105.    wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
  106.    wcx.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
  107.    wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
  108.    wcx.lpszClassName = WindowName;
  109.    wcx.lpszMenuName = NULL;
  110.  
  111.    if( !RegisterClassEx( &wcx ) )
  112.       return( FALSE );
  113.  
  114.    hwnd = CreateWindowEx(
  115.         WS_EX_OVERLAPPEDWINDOW,
  116.       WindowName, WindowTitle,
  117.       WS_POPUP              ,
  118.       0, 0,1, 1, NULL, NULL,
  119.       hInstance, NULL);
  120.  
  121.     if( !hwnd )
  122.        return( FALSE );
  123.    ShowWindow( hwnd, nCmdShow );
  124.    return TRUE;
  125. }
  126.  
  127.  
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Modo De Video
« Respuesta #4 en: Miércoles 4 de Febrero de 2004, 20:15 »
0
Feo en qeu sentido JK? perdon por no haberte respondido antes :D
QliX=D! - From the top of Tsunami

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Modo De Video
« Respuesta #5 en: Jueves 5 de Febrero de 2004, 04:40 »
0
Me parece aburrido de programar..
demasiadas vueltas para algo tan sencillo.. es mas me parece que los programas pierden su logica habitual para convertirce enun ciclo de mensajes..
mejor dicho se vuelve orientado a objetos pero por debajo :(
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Modo De Video
« Respuesta #6 en: Viernes 6 de Febrero de 2004, 02:59 »
0
Muy bueno lo que has hecho y un poco imposible lo que pides...como podriamos ayudarte siendo que eres una maquina de pensar???  ;) . Saludos y suerte :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

MByte

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Modo De Video
« Respuesta #7 en: Viernes 6 de Febrero de 2004, 07:54 »
0
Hola a todos.............. Yo difiero un poco en lo que dices que es aburrido....creo que no hay mejor cosa que programar de este modo.......alomejor no piensas al igual que yo que la esencia de la programacion es programar en bruto....nose un ejemplo puede ser como ASM pero es muy extremo(pero no deja de ser bueno y bonito)....hablando de una programacion un poco mas tangible no tan abstracta creo que programar usando API es lo mas entretenido....tu prefieres mas la programacion de alto nivel(hablando en nivel de facilidad) como MFC que cada dia se parece mas a Visual Basic el entorno de trabajo(pero claro nunca se compararian)......................... :D

 jejeje disculpen si me extendi un poquito lo que pasa que soy un amante de la programacion en la cual tu puedes hacer todo lo que se te ocurra mediante codigo y nada mas que codigo sin usas herramientas de programacion mas que las que te brinda el sistema ya sea WINDOWS O LINUX, ETC.... por esto mismo odio la MFC aunque uno tiende a caer por la fuerza en programar con esta......

a todo esto esta bueno el codigo que mandaste juank..... y si has visto mi pregunta sobre los controles OCX sin usar MFC, me gustaria saber que opinas o sabes al respecto...... nos vemos  ;)