Skocz do zawartości

Pare dupereli. m.in. editbox i button


Prochor

Recommended Posts

No wiec sprawa jest nastepujaca:
Te tutoriale z winapi dzialaja mi jak chca, czyli ze nie chca, w zwiazku z czym jestem tutaj ;) : mam takie letko pogiete pytanka:
1. Chce zeby przy uruchamianiu aplikacji cursor pojawil sie automatycznie w edicie, niby gdzies tam znalazlem ze SetFocus(HandleToControl) powinno zalatwic sprawe ale nie wiem gdzie mam to wsadzic ;)

2. Chce wczytac liczbe z editboxa do zmiennej i niby ja pobieram i zapisuje ale cos mi dalej nie dziala. Jezeli mam edita tylko z numerkami to musze miec subclassing bo juz sie zgubilem deczko :/

3. Jak chce wyswietlic TextOut()'em cos na ekran po wcisnieciu przycisku to gdzie powinienem wsadzic warunek i jak on mniej wiecej powinien wygladac :/

Link do komentarza
Udostępnij na innych stronach

ad 1. SetFocus po utworzeniu kontrolki

ad 2. Standardowo jak masz edita z tekstem to GetDlgItemText() ale potem musisz tekst zmienic na inta f. atoi(), albo od razu uzyc f. GetDlgItemInt() ktora zwraca int. (subclassing nie jest potrzebny w tym przypadku)

ad. 3 jak chcesz wyswietlac podczas wcisniecia przycisku to musisz podczas WM_KEYDOWN (lub innych jak np. WM_CHAR) zapisywać sobie w zmiennej wartosc TRUE albo FALSE. Wtedy podczas WM_PAINT sprawdzasz czy ta zmienna ma true czy false i wyswietlasz textOutem albo nie.

W razie niejasnosci porsze pytać ;)
powodzenia

Link do komentarza
Udostępnij na innych stronach

1. W funkcji obsługi komunikatów, dodajesz obsługe komunikatu WM_CREATE. W niej najpierw używasz funkcji:

HWND GetDlgItem(
  HWND hWnd,     // uchwyt do Twojego głównego okna
  int nIDDlgItem   // identyfikator edita, w którym chcesz mieć focus
);

żeby uzyskać uchwyt do okna Edita, a potem wywołujesz

HWND SetFocus(
  HWND hWnd   // handle to window to receive focus
);

podając jako parametr uchwyt uzyskany wcześniej.

2. Zeby uzyskać edit, do którego można wprowadzać tylko liczby nie trzeba subclassingu. Wystarczy nadać mu styl ES_NUMBER. Nie piszesz dokładnie co Ci nie działa, więc trudno cokolwiek powiedzieć.

3. Robisz sobie jakąś zmienną globalną, lub statyczną w funkcji obsługi komunikatów, np typu bool i ustawiasz na false. W obsłudze naciśniecia przycisku ustawiasz sobie tęzmiennąna true. Potem w obsłudze komunikatu WM_PAINT sprawdzasz czy wartość tej zmiennej jest równa true i jeżeli tak to wyrysowujesz tekst.

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