Skocz do zawartości

Redraw okna


Avatar

Recommended Posts

Witam!

Od dawna odwiedzam forum i stronkę a dziś zostałem zmuszony :) do napisania pierwszego posta :)

Problem mój w uproszczeniu polega na tym, że mam sobie pole EDIT (nie ma problemu z obsługą) i przycisk (BUTTON of kors, również spoko :) ) no i co zrobić, żeby po wpisaniu czegokolwiek do EDIT'a i walnięciu BUTTON'a, tekst z EDITA wyświetlił się w głównym okienku??

Dzięki z góry za pomoc

Link do komentarza
Udostępnij na innych stronach

No to w takim razie musisz skorzystac z kontekstu urządzenia i funkcji TextOut().
Do swojej funkcji obslugi komunikatow dodaj cos takiego:

        case WM_PAINT:
                PAINTSTRUCT ps;
            HDC hDC;
            hDC=BeginPaint(hWnd,&ps);
            TextOut(x,y,bufor,strlen(bufor));
            EndPaint(hWnd,&ps);
               break;

gdzie:
x,y - wspolrzedne punktu w ktorym chcesz wyswietlic tekst
bufor - wskaznik do bufora (moze byc tablica charow) w ktorym znajduje sie tekst do wyswietlenia

Nastepnie, przy nacisneiciu na przycisk zapisz tekst do zmiennej bufor i odmaluj okno funkcją RedrawWindow().

Nie jest to, zapewne, najoptymalniejsze rozwiazanie, ale powinno Ci naprowadzic na wlasciwy trop.

ps. Poczytaj sobie jeszcze o funkcjach SetTextAlign(), SetBkMode(), SetTextColor()...

Link do komentarza
Udostępnij na innych stronach

No więc robiłem tak jak napisałeś, ale nic to nie dało.

Rysowanie zrobiłem tak jak podałeś, a RedrawWindow() wywołałem RedrawWindow(hWnd,&rect,NULL,RDW_UPDATENOW)

gdzie hWnd - uchwyt okna, rect - prostokącik otrzymany po wywołaniu GetClientRect().

RedrawWindow() wywołałem po otrzymaniu wiadomości wciśnięcia buttona WM_COMMAND.

Na teraz dość, bawię się jak wstanę:)

Link do komentarza
Udostępnij na innych stronach

Po pierwsze w kodzie BIAŁEGO jest malutki blad ale pewnie go skorygowales, chodzi o to ze brakuje jednego parametru w funkcji TextOut a mianowicie pierwszym parametrem powinien byc uchwyt kontekstu po ktorym chhcesz malowac czyli HDC ;)

A co do Redraw - to nie wiem jak to dziala ale lepije uniewaznic caly ekran i tez powinno zadzialac:

BOOL InvalidateRect(

    HWND hWnd,  // handle of window with changed update region  
    CONST RECT *lpRect, // address of rectangle coordinates 
    BOOL bErase // erase-background flag 
   );

wywolanie funkcji w ten sposób InvalidateRect(hWnd, NULL, TRUE); uniewazni ci cale okno clienta i odmaluje go ;)

Link do komentarza
Udostępnij na innych stronach

Piasiu napisał:
Po pierwsze w kodzie BIAŁEGO jest malutki blad ale pewnie go skorygowales, chodzi o to ze brakuje jednego parametru w funkcji TextOut a mianowicie pierwszym parametrem powinien byc uchwyt kontekstu po ktorym chhcesz malowac czyli HDC ;)

Z tym nie było problemu:)

Piasiu napisał:
wywolanie funkcji w ten sposób InvalidateRect(hWnd, NULL, TRUE); uniewazni ci cale okno clienta i odmaluje go ;)

Dzięki wielkie, zadziałało :)

Link do komentarza
Udostępnij na innych stronach

Piasiu napisał:
Po pierwsze w kodzie BIAŁEGO jest malutki blad ale pewnie go skorygowales, chodzi o to ze brakuje jednego parametru w funkcji TextOut a mianowicie pierwszym parametrem powinien byc uchwyt kontekstu po ktorym chhcesz malowac czyli HDC ;)

Przepraszam za ten "malutki" blad :? - tak to jest jak sie pisze posty o godzinie drugiej w nocy ;-).

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...