Skocz do zawartości

Początkujący, pytanie


Memory

Recommended Posts

Witam

w procedurze komunikatów musisz obsłużyć wiadmość WM_COMMAND.

WM_COMMAND
wNotifyCode = HIWORD(wParam); // kod zdarzenia notify
wID = LOWORD(wParam); // identyfikator okna
hwndCtl = (HWND) lParam; // uchwyt okna

czyli z pola wParam wyciągaz najpierw identyfikator okna, które chcesz obsłużyć, w twoim przypadku będzie to 101. Potem sprawdzasz czy zdarzenie notify jest równe BN_CLICKED i wykonujesz odpowiednie operacje. W praktyce wygląda to mniej więcej tak:


//główna pętla switch
case WM_COMMAND:
if((LOWORD(wParam) == 101) && (HIWORD(wParam) == BN_CLICKED))
{
  //tutaj funkcje, które mają być wykonane po wciśnięciu buttona
}
break ;

Jeśli coś jest niejasne to pytaj ;)

Pozdrawiam

Link do komentarza
Udostępnij na innych stronach

dzięki za odpowiedz, dzieki niej uporalem sie z tym proglemem, ale bede mial jeszcze pare pytan:

1)jak stworzyc pole(kontrolke) static? w artach na tej stronie tego niema. i jak ją później obsłużyć?

2)chcialem na podstawie arta z tej strony dostosowywać aplikację do Windows XP, zrobilem wszystko co bylo w artykule napisane, dodalem tez w WM_CREATE InitCommonControls() i dolaczylem commctrl.h . Podczas komilacji kompilator wywala error:

--------------------Configuration: winapi - Win32 Debug--------------------
Compiling resources...
Linking...
winmain.obj : error LNK2001: unresolved external symbol __imp__InitCommonControls@0
Debug/winapi.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

winapi.exe - 2 error(s), 0 warning(s)
Link do komentarza
Udostępnij na innych stronach

teraz mam kolejne 2 pytania(sory ze ich tak duzo, ale jestem jeszcze poczatkujacy w winapi)

1)jak w utworzonym w ten sposob staticu zmienic tekst, i wogole jak pobrac aktualny tekst ze statica

2) (to bedzie lame)jak utworzyc nowe okna dla programów, takie zeby byly puste i dalo by sie na nie dodawac kontrolki. prawdopodobnie tak jak glowne okno aplikacji, ale tu pojawia sie problem: czy budowac na starej klasie okna(WNDCLASS), czy stworzyc nowa? i jesli urzyc tej starej to jak wypelnic pole .lpfnWndProc ? czy mozna skorzystac z tej samej petli komunikatow dla dwoch okien?

Link do komentarza
Udostępnij na innych stronach

Witam,
tekst pobierasz i ustawiasz za pomocą GetWindowText i SetWindowText...poszukaj o tych funkcjach w dokumentacji, którą znajdziesz na ftp tej
strony (plik hlp.) Co do okien...zależy jak chcesz z nich korzystać. Jednak polecam zapoznać się z oknami dialogowymi (art o tym znajdziesz na tej stronie). Co do tworzenie drugiego okna na podstawie wypełnionej już struktury wndclass. Po prostu jeśli ją już raz wypełniłeś i zarejestrowałem funkcją RegistryClass to zmień pola, które nie pasują do nowego okna...(czyli klase i funkcje obsługi komunikatów, jeśli nie chcesz żeby okno zachowywało się tak jak to pierwsze) i jeszcze raz zarejestruj. Potem utuwórz już standardowo nowe okno, którego klasę będzie stanowiła nazwa klasy, którą podałeś podczas drugiego wypełniania naszej strukturki. Wiem, może to wszystko trochę zamotanie napisałem...ale może jakoś zrozumiesz ;)

Pozdrawiam i życzę owocnej pracy z dokumentacją (prawdę mówiąc jeśli się z nią nie zapoznasz i nie nauczysz korzystać to...cóż...każdy postrzega to nieco inaczej) [Jak będziesz miał problemy to pisz, tutaj albo na moje gg].

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