Skocz do zawartości

Pare dupereli. m.in. editbox i button


Recommended Posts

Napisano

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 :/

Napisano

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

Napisano

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.

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