Memory Napisano Listopad 19, 2019 Autor Zgłoś Udostępnij Napisano Listopad 19, 2019 mam zrobioną kontrolke CreateWindow("button","Przycisk",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,0,25,140,25,hWnd,(HMENU)101,hInstance,NULL); i chcialem teraz obsluzyc jego kliknięcie w pętli komunikatów. i niewiem jak. wiem ze bedzie tam jakis komunikat BM_CLICK. ale gdzie on bedzie? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Surprise Napisano Listopad 20, 2019 Zgłoś Udostępnij Napisano Listopad 20, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Memory Napisano Listopad 20, 2019 Autor Zgłoś Udostępnij Napisano Listopad 20, 2019 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) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Cipher Napisano Listopad 20, 2019 Zgłoś Udostępnij Napisano Listopad 20, 2019 1)Tworzenie statica: CreateWindow("static","Napis w staticku",WS_CHILD|WS_VISIBLE,10,10,100,30,hWnd,NULL,hInstance,NULL); 2) Musisz chyba dołączyć do projektu biblioteke comctl32.lib. #pragma comment(lib,"comctl32.lib") Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Memory Napisano Listopad 20, 2019 Autor Zgłoś Udostępnij Napisano Listopad 20, 2019 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? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Surprise Napisano Listopad 21, 2019 Zgłoś Udostępnij Napisano Listopad 21, 2019 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]. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.