Skocz do zawartości

Recommended Posts

Napisano

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

Napisano

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()...

Napisano

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ę:)

Napisano

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 ;)

Napisano
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 :)

Napisano
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 ;-).

Napisano

Heh ;) Jeszcze jeden problemik z redraw'em :)

Otóż, otwierając okienko nr1, a następnie okienko nr2, jeśli zasłoni się okienko nr1, okienkiem nr2, to na okienku nr1 znikają wszystkie pola (edit,static itp.)

Jakieś pomysły/rady? :)

Napisano

A) Może pomieszales cos ze stylami okna.
B) Spróbuj w WM_PAINT zwrócić 0 zamiast break; ("break" pisal Bialy)
C) Jakiś inny problem z WM_PAINT, może pominąłeś jakąś instrukcje, albo coś innego.

Ja bym zwrócił uwagę szczególnie na komunikat WM_PAINT.

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...