WinApi kontrolka nie obsluguje komunikatów

WinApi kontrolka nie obsluguje komunikatów
gswidwa
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 839
0

Witam. Tworzę wlasną kontrolkę ScrollBar i mam pewien kłopot. Mianowicie po rejestracji kontrolki jako klasa "gSB" każde okno stworzone na podstawie tej klasy powinno wysyłać komunikaty od siebie pochodzące do procedury

Kopiuj
 LRESULT CALLBACK PROC_SCROLLBAR( HWND hwnd, UINT mesg, WPARAM wParam, LPARAM lParam );

.
Również wskaźnik na strukturę, jaką według

Kopiuj
 struct SUWAK *wsk = (struct SUWAK *)malloc(sizeof(SUWAK));
    wsk->obraz = bitmapa;
    wsk->maska = CreateBitmapMask( bitmapa, Transparent );
    wsk->kontekst = CreateCompatibleDC(NULL);

    HWND hTmp = CreateWindowEx( 0, Klasa, NULL, WS_POPUP, 0, 0, 0, 0, NULL, NULL, *hInstance, NULL );

    // zapamietanie kontekstu i bitmap w dodatkowej pamięci okna
    SetClassLong( hTmp, 0,( LONG ) wsk );

powinno posiadać każde okno tej klasy zawsze jest równa NULL (co sprawdzam w komunikacie WM_PAINT w WindowProcedure). Nie wiem, czy nie robie błędu, gdyż w komunikacie WM_CREATE mojej kontrolki pobieram strukturę funkcją

Kopiuj
GetClassLong(hwnd, 0)

i przypisuję ją dla kontrolki funkcją SetWindowLong(hwnd, 0, (LONG)wsk);

Kopiuj
. W załącznikach umieszczam plik main.cpp oraz stale.h Przez całą noc szukałem błędu i dziś rano dopadłem się do neta ;] Naprowadźcie mnie chodź troszkę. (Do nauczenia się tego korzystałem z kursu http://www.google.pl/url?sa=t&rct=j&q=wlasne%20kontrolki%20cz2%20winapi&source=web&cd=1&cad=rja&ved=0CCAQFjAA&url=http%3A%2F%2Fcpp0x.pl%2Fkursy%2FKurs-WinAPI-C%2B%2B%2FKontrolki%2FWlasne-kontrolki-cz-2%2F211&ei=nixtUI2NLI7XsgaH_4DoBQ&usg=AFQjCNERxgbLouDYhejVqoA3-cE1yqVpvQ)
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

case WM_CREATE:{
struct SUWAK *wsk_klasa = (struct SUWAK *)GetClassLong(hwnd, 0);

case WM_DESTROY:{
struct SUWAK *wsk = (struct SUWAK *)GetWindowLong(hwnd, 0);

Zdecyduj się, czy ClassLong czy WindowLong.

Przy WindowLong trzeba podać GWLP_USERDATA a nie 0.

gswidwa
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 839
0

A jak za pomocą SetClassLong() przypiszę do klasy ową strukturę to po tworzeniu funkcją CreateWindowEx() jakiejś kontrolki tej klasy każda z nich będzie wskazywać na inną strukturę czy na strukturę tę samą? Bo mi zależy, aby każdy Scrollbar jaki stworzę posiadał oddzielną strukturę na własne potrzeby.

Moglibyście mnie skierować linkiem do funkcji SetClassLong na MSDN ? Bo nie moge ogarnąć tej strony... ;]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.