Resultados 1 al 7 de 7

Duda de programacion de windows en c

  1. #1 Duda de programacion de windows en c 
    Medio
    Fecha de ingreso
    May 2002
    Mensajes
    110
    Descargas
    0
    Uploads
    0
    Estoy intentando hacer un programilla de windows en c y hay una cosa q no me sale, en la region cliente de la ventana escribo un numero q va aumentado, osea q pongo un contador q se tendria q ir actualizando a cada vuelta q da al bucle de mensajes de la aplicacion (el while (getmessage(blablablabla)) pero no me lo redibuja, he probado con UpdateWindow(), mandando un mensaje WM_PAINT, o llamando a una funcion q escribe el texto, pero nada, no dibuja nada. Alguien sabe q puedo hacer? (el wndclass.style tiene el VREDRAW y HREDRAW)
    They need more heroes.
    Do you know any heroes?
    Yes, I know one
    Citar  
     

  2. #2  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    mmm, no se a que nivel estas trabajando en VC++, pero si estás rascando las apis sin usar las MFC, mira si tienes el siguiente codigo en el evento WM_PAINT.


    case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);
    GetClientRect(hwnd, &rect);

    EndPaint(hwnd, &ps);
    return 0;


    Solo te pongo el WM_PAINT, ya me contarás
    Citar  
     

  3. #3  
    Medio
    Fecha de ingreso
    May 2002
    Mensajes
    110
    Descargas
    0
    Uploads
    0
    si, eso tb lo he intentado, meter to eso en el WM_PAINT, pero solo lo pinta una vez, por mucho q le mande el mensaje WM_PAINT o el UpdateWindow() (aunq el getclientrect no lo uso, uso SetText o algo asi). Si, solo uso apis, nada d MFC. Thx por la ayuda.

    Un saludo
    They need more heroes.
    Do you know any heroes?
    Yes, I know one
    Citar  
     

  4. #4  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Es una putada porque no puedo probar nada en VC en el curro porque salta constantemete ese mensaje tan conocido "no se ha podido read la memoria" cuando habro el VC, pero creo que este codigo funcionaba.


    ---------------------------------------------------------------------------------

    #include<windows.h>
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

    HINSTANCE hIns;

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR SzCmdLine,int iCmdShow)
    {
    static char szAppName[]="holaWin";
    HWND hwnd;
    MSG msg;
    WNDCLASSEX wndclass;
    hIns=hInstance;
    //global HINSTANCE HInstance;

    wndclass.cbSize =sizeof(wndclass);
    wndclass.style =CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc =WndProc;
    wndclass.cbClsExtra =0;
    wndclass.cbWndExtra =0;
    wndclass.hInstance =hInstance;
    wndclass.hIcon =LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground =(HBRUSH) GetStockObject (GRAY_BRUSH);
    wndclass.lpszMenuName =NULL;
    wndclass.lpszClassName =szAppName;
    wndclass.hIconSm =LoadIcon(NULL, IDI_APPLICATION);

    RegisterClassEx(&wndclass);

    hwnd= CreateWindow(szAppName,
    "Hola pedro",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);

    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);


    while(GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return msg.wParam;
    }

    LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam,LPARAM lParam)
    {
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    static HWND io;
    static HWND io2;
    static HWND io3;
    static HWND Btn;
    int val1;
    int val2;
    char res[10];
    switch(iMsg)
    {

    case WM_CREATE:

    io=CreateWindow("Edit",
    "",
    WS_CHILD|ES_NUMBER|WS_VISIBLE,
    100,
    150,
    120,
    20,
    hwnd,
    NULL,
    hIns,
    NULL);

    io2=CreateWindow("Edit",
    "",
    WS_CHILD|ES_NUMBER|WS_VISIBLE,
    250,
    150,
    120,
    20,
    hwnd,
    NULL,
    hIns,
    NULL);

    io3=CreateWindow("Edit",
    "",
    WS_CHILD|ES_NUMBER|ES_READONLY|WS_VISIBLE,
    400,
    150,
    120,
    20,
    hwnd,
    NULL,
    hIns,
    NULL);

    Btn=CreateWindow("button",
    "sumar",
    WS_CHILD|WS_VISIBLE,
    250,
    200,
    120,
    20,
    hwnd,
    NULL,
    hIns,
    NULL);
    return 0;

    case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);

    GetClientRect(hwnd, &rect);

    //DrawText(hdc,"",1, &rect,
    // DT_SINGLELINE | DT_CENTER | DT_VCENTER);

    EndPaint(hwnd, &ps);
    return 0;

    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;

    case WM_COMMAND:
    {
    switch LPARAM
    {
    case Btn:
    val1=2;
    val2=2;
    SetWindowText(io2,itoa(val1+val2,res,10));
    }

    return 0;
    }
    }
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
    }


    ----------------------------------------------------------------------------------

    Supongo que aunque lo he pegado todo este foro no permitirá que se vea todo, asi que tendrás que currartelo, jeje
    Citar  
     

  5. #5  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Que cabron, ni tan solo respeta las tabulaciones, jajajajaj
    Citar  
     

  6. #6  
    Medio
    Fecha de ingreso
    May 2002
    Mensajes
    110
    Descargas
    0
    Uploads
    0
    Menuda mierda, si uso el switch (lParam) me dice "case expression not constant", asi q tengo q usar un if (lParam == (long)Btn) y entonces si funciona. Pero el problema no es ese, con controles tb lo se hacer yo. El caso es q quiero escribir en el fondo con DrawText a cada vuelta del bucle de los mensajes (lo q hago es incrementar un contador y llamar a DrawText, pero solo escribe cuando minimizo y vuelvo a mostrar la pantalla o cuando le paso una ventana por encima.
    They need more heroes.
    Do you know any heroes?
    Yes, I know one
    Citar  
     

  7. #7  
    Administrador Foros HH
    Fecha de ingreso
    Mar 2002
    Mensajes
    3.067
    Descargas
    5
    Uploads
    0
    Claro, lo tienes que refrescar por código, ahora solo se te refresca por evento, ya he entendido tu problema.
    Mira, si quieres pasamelo a y lo miro porque hace tiempo que no toco el VC a tan bajo nivel.
    Por cierto, que cuando llegues a las MFC sentirás un desahogo increible, jajaja, cuando tengo que hacer alguna cosa siempre lo hago con MFC, es mas amigable.
    Bueno, ya me dirás algo, saludossss
    Última edición por eXcalibur; 30-09-2002 a las 12:57
    Citar  
     

Temas similares

  1. duda windows - mac
    Por 1fluke2 en el foro WINDOWS
    Respuestas: 3
    Último mensaje: 14-02-2008, 12:40
  2. Duda con windows x64 y 4 procesadores
    Por chico1988 en el foro GENERAL
    Respuestas: 0
    Último mensaje: 19-07-2007, 09:48
  3. Duda sobre programación c
    Por alextmf en el foro PROGRAMACION DESKTOP
    Respuestas: 1
    Último mensaje: 28-04-2006, 10:50
  4. Duda con usuarios en Windows XP
    Por LESS316 en el foro WINDOWS
    Respuestas: 1
    Último mensaje: 16-01-2006, 03:04
  5. duda con windows 2000
    Por seele en el foro HARDWARE
    Respuestas: 4
    Último mensaje: 04-07-2003, 13:17

Marcadores

Marcadores