menu

darmowe eBooki

Delphi - 31 przydatnych programów

okładka

Naucz się pełniej wykorzystywać możliwości Delphi

Sprawdź sam, czytając darmowy fragment eBooka Delphi - 31 przydatnych programów.

Czy ta wiedza okazała się dla Ciebie przydatna? Chcesz wiedzieć więcej? Zobacz tutaj.

Google Adsense

migawka z forum

Dowcipy o programistach/informatykach

Witam, grunt to potrafić śmiać sie z samego siebie  ;DPrzychodzi informatyk do domu po pra...

Rysiek z "Klanu"

W związku z ogromnym poruszeniem we wszystkich mediach w naszym kraju, dotyczącym tak kultowej postaci jak Rysiek z &quo...

Propozycje zmian w serwisie Guide C++

Witam, ze względu na to że nie znalazłem podobnego tematu na forum, a mam kilka sugestii   ;) postanowiłem je ...

buttony

SDJ
vortal programistów
Vademecum sieci komputerowych
Soldiers'04 - fan klub Legii Warszawa
www.katalog.bajery.pl
katalog stron
katalog najlepszych stron
jestem w katalogu
Wszystko o C++
[zamknij]

Korzystamy z plików cookies i umożliwiamy zamieszczanie ich osobom trzecim. Pliki cookie pozwalają na poznanie twoich preferencji na podstawie zachowań w serwisie.
Uznajemy, że jeżeli kontynuujesz korzystanie z serwisu, wyrażasz na to zgodę.

jesteś w: Kurs WinAPI / Kontrolki
Szkoła Hakerów - Kurs Hackingu Bez Cenzury

Kontrolki

W tej lekcji powiemy sobie o trochę o kontrolkach występujących pod Windą. Kontrolki zna każdy, kto korzysta z Windy. Tylko być może nie każdy zdaje sobie z tego faktu sprawę ;) Uściślijmy więc. Kontrolka to wszystko to, co znajduje się w oknie. Począwszy od standardowych przycisków, których w każdej aplikacji jest bez liku, poprzez paski przewijania, rozwijane listy, paski postępu na kontrolce wyświetlającej strukturę plików na dysku kończąc. Wbrez pozorom stworzenie kontrolki, czy też okna pochodnego jest bardzo proste. Wystarczy skorzystać ze poznajej już funkcji CreateWindow. Problem pojawia się dopiero w przypadku bardziej zaawansowanych kontrolek, które potrzebują więcej informacji. Trzeba wtedy stworzyć odpowiednią strukturę, należycie ją zainicjalizować i posłać do kontrolki w postaci komunikatu. Ale co tam, jeśli już się dobrze pozna zasady to API przestanie być tak straszne, jak na początku :) Doskonałym sposobem na nauczenie się tego wszystkiego jest.. czyste eksperymentowanie oraz ćwiczenie poprzez pisanie bardzo prostych programów, które nie będą robiły nic, prócz obsługi tylko jednej kontrolki. Gdy już zapoznasz się dość dobrze ze składnią wybierasz nową kontrolkę i.. ćwiczysz, aż do momentu opanowania jej i tak dochodzisz do perfekcji. Dlatego też nie będę się skupiał na każdej kontrolce z osobna. Przedstawię tylko ogólny sposób kreowania i używania kontrolek. Już widzę, jak Ci mina rzednie i zaczynasz mieć wrażenie, że dalsze czytanie nie ma sensu. Zanim jednak przerwiesz czytanie zastanów się tak dokładnie co jest potrzebne do stworzenia okna pochodnego? Okazuje się, że do stworzenia oraz skorzystania z dowolnej kontrolki potrzeba kilku rzeczy. Oto one:

Ogólnie wszystko za wyjątkiem ostatniej pozycji można znaleźć w help'ach. Jednak zwykle są one pisane po angielsku i wiele osób z nich rezygnuje :( Ja posiadam niestety wersję English, ale jakoś sobie radzę. Jeżeli znasz choć trochę angielski to polecam zaopatrzenie się w takie cudeńko :D Można je pobrać m.in. z serwera winapi.org. Archiwum zajmuje około 6 MB. To naprawdę świetna dokumentacja WinAPI. Szkoda tylko, że w angielskim, ale i tak da można zawsze coś zeń się dowiedzieć :) Jeżeli chodzi o polską dokumentacje to.. no cóż zetknąłem się kilkaktornie z dość ciekawym opisem wybranych funkcji WinAPI, ale nie było tam zbyt wiele o stylach, czy komunikatach. Tak więc postanowiłem rozszerzyć nieco tę witrynę o opis konkretnych stylów, komunikatów, funkcji WinAPI, przydatnych struktur etc. Wszystko to znajdziesz na podstronie pomoc Win32API domowej roboty [czyli mojej własnej ;) ] Teraz dla formalności pokażę, jak wygląda tworzenie kontrolki od strony praktycznej. W przykładzie skorzystam ze zwykłego przycisku. Wygląda to tak:

  1. HWND hPrzycisk;
  2. hPrzycisk = CreateWindow ("button", "zwykły przycisk",
  3. WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
  4. 10, 10, 100, 20,
  5. hOknoGlowne, NULL, hInstancja, NULL);

Pierwszy argument to klasa okna. Drugi to nazwa okna, czyli w naszym przypadku tekst widniejący na przycisku. Trzeci argument to styl. Styl BS_PUSHBUTTON oznacza zwyczajny prostokątny [ew. kwadratowy] przycisk. Równie dobrze zamiast BS_PUSHBUTTON możnabyło postawić zero, gdyż BS_PUSHBUTTON to tak naprawdę makrodefinicja #define BS_PUSHBUTTON 0. Pozostałe argumenty to kolejno współrzędne przycisku, jego rozmiary, uchwyt okna-rodzica, uchwyt menu lub identyfikator kontrolki [wymagany przez komunikat WM_COMMAND], uchwyt instancji oraz dodatkowe informacje, których nie ma. Jak widzisz przy tworzeniu kontrolek nie trzeba już rejestrować klasy, jak to miało miejsce przy głównym oknie programu. Szybciej i prościej :) W analogiczny sposób tworzy się inne kontrolki. Jedyne, co trzeba zmienić, to podać inną nazwę. Czasami trzeba jeszcze wywołać specjalną funkcję inicjalizującą o nazwie InitCommonControlsEx.