Mięki Napisano Październik 9, 2019 Autor Zgłoś Udostępnij Napisano Październik 9, 2019 Stworzylem kontrolke i mam problem z zapisywaniem i odczytywaniem struktury, w ktorej sa zapisywane ustawienia kontrolki. typedef struct { HINSTANCE hInstance; HWND hwndParent; //uchwyt rodzica HMENU id; //id int x; //pozycja x int y; //pozycja y int width; //szerokosc int height; //wysokosc //reszta zmiennych... } LBTN; dane do struktury zapisuje sie SetWindowLongPtrW(hwnd, 0, (LONG_PTR) &liteButton); ale jak je teraz odczytac?? Kompilator wywala mi blad jesli sprobuje tak liteButton = (LBTN) GetWindowLongPtrW(hwnd, 0); Ktos wie jak to zrobic? Probowalem na pare roznych sposobow, ale jakos nie wychodzi... Tutaj zalaczam link do zrodel. Pisane w dev-cpp Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Visage Napisano Październik 9, 2019 Zgłoś Udostępnij Napisano Październik 9, 2019 Po pierwsze: czytaj to, o czym informuje cie kompilator Rozwiazanie twojego bledu: LBTN* pliteButton = (LBTN*) GetWindowLongPtrW(hwnd, 0); Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Mięki Napisano Październik 9, 2019 Autor Zgłoś Udostępnij Napisano Październik 9, 2019 To dziala, ale nie do konca. Jesli strukture zdefiniuje jako LBTN* liteButton to przy probie zmodyfikowania jednej ze zmiennych kontrolka dostaje zwisa. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Visage Napisano Październik 9, 2019 Zgłoś Udostępnij Napisano Październik 9, 2019 No to pokaz jak zmieniasz te zmienne bo zaloze sie ze robisz to zle :P Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Mięki Napisano Październik 9, 2019 Autor Zgłoś Udostępnij Napisano Październik 9, 2019 zmienne struktury zmieniam liteButton->x = 10; No to skoro jestesmy przy tym, to moze moglby mi ktos wytlumaczyc czym rozni sie struktura, np. typedef struct { //tutaj jakies zmienne } LBTN, lBtn; jesli zdefiniujemy ja jako LBTN albo lBtn. I tak samo czym rozni sie '->' od '.'? Jako ze wczesniej programowalem w vb to jestem przyzwyczajony do kropki, ale w c++ to widzocznie jakas roznica jest. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Visage Napisano Październik 10, 2019 Zgłoś Udostępnij Napisano Październik 10, 2019 to przypisanie jest prawidlowe pod warunkiem ze liteButton zadeklarowales tak: LBTN* liteButton. Zazwyczaj robi sie ze do struktury definiuje sie typ normalny i wskaznikowy i wyglada to tak: typedef struct { //tutaj jakies zmienne } LBTN, *PBTN; A co do reszty twoich pytan to proponuje poszukac jakiejs dobrek ksiazki lub strony. ja nie mam zamiaru rozwodzic sie na temat skladni C/C++ Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Surprise Napisano Październik 10, 2019 Zgłoś Udostępnij Napisano Październik 10, 2019 Sprawa jest prosta: jeśli operujesz na wskaźniku do struktury to do jej elementów odwołujesz się za pomocą ->...a kropa również występuje w c++ tylko, że za jej pomocą odnosisz się do elementu struktury, która jest zwykłym obiektem (ni wskaźnikiem). Co do LBTN, a lBtn no to tylko nazwa się zmienia chiba. Przed nazwą zmiennych (to tylko taka zasada) podaje się LP w celu zwrócenia uwagi na to, że jest wskaźnikiem. np w dokumentacji często zamiast gwiadki dodany jest przedrostek LP. Może coś pochrzaniłem...wiosna idzie!!! pozdrawiam Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Październik 10, 2019 Zgłoś Udostępnij Napisano Październik 10, 2019 codeguy napisał: ...np w dokumentacji często zamiast gwiadki dodany jest przedrostek LP. Nie "zamiast". Dodawanie przedrostka LP, to tylko taka konwencja w nazewnictwie struktur, mająca dać do zrozumienia programiście (nie kompilatorowi), że ma do czynienia z wskaźnikiem (LP od Long Pointer). Gwiazdka, natomiast, to samo "daje do zrozumienia" właśnie kompilatorowi. Oto przykładowa, prosta struktura, którą znalazłem w MSDNie: typedef struct _MENUBUTTONDATA { int idCommand; int x; int y; } MENUBUTTONDATA, *LPMENUBUTTONDATA; 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.