
Nemo
Członkowie-
Postów
0 -
Dołączył
-
Ostatnio
Nigdy
Typ zawartości
Profile
Fora
Kalendarz
Articles
Pliki
Wszystko napisane przez Nemo
-
Zreszta - topic byl o tym jak do kontroli wstawic 3 zmienne typu word wiec moj sposob jest idelany. W sumei na wstawienie jednego bajta jets jeszcze latwiejszy sposob: BYTE b; SetWindowLong(hWnd, GWL_USERDATA, (long)&b); //gdzies tam dalej w programie BYTE *tmp = (BYTE*)GetWindowLong(hWnd, GWL_USERDATA);
-
No ot jeszcze latwiej BYTE b; SetWindowLong(hWnd, GWL_USERDATA, MAKELONG(MAKEWORD(b,0),0)); //gdzies tam dalej w programie long lon = GetWindowLong(hWnd, GWL_USERDATA); BYTE tmp = HIBYTE(HIWORD(lon));
-
Eh, ja od poczatku bylem za innym projektem 8) No ale nadal jestem tylko ze narazie nic nei robie - zekam az sie skonczy ten i sie wezme za prace nad nowym projektem o ile bedzie mnie interesowal. Bo w sumie mam jako taki pomysl. Zrobic cos co by przechowywalo artykuly - tzn. formatowany text + grafika - zeby dzialal jak word ;) Juz cos takiego widzialem ale ma jakies dziwne czasme bledy :D
-
Eh, ludzie, ludzie. Robi sie to tak: Przypuscmy ze mamy do zapamietania jakas klase, np.: class CKlasa { public: char imie[16], nazwisko[32], nr_telefonu[20]; void JakasFunkcja(void) {}; }; tworzymy sobie jakis obiekt; zapisujemy adres tego obiektu go do danych okna; i potem odczytujemy; CKlasa klasa; // zapis SetWindowLong(hWnd, GWL_USERDATA, (LONG)&klasa); [...] // i gdzies indziej w programie: CKlasa *tmp = (CKlasa) GetWindowLong(hWnd, GWL_USERDATA); //i teraz tak sie tym poslugujemy: tmp->JakasFunkcja(); i po sprawie ;)
-
A czy ja powiedzialem ze zabronione ? ;) Napisałem sobie tak offtopicowo bo ja jestem master of post++ 8)
-
Offtopic: Pan artisto na dwa fronty leci: https://warsztat.mmogspot.com/forum/viewtopic.php?t=4880 https://warsztat.mmogspot.com/forum/viewtopic.php?t=4881
-
Eh, napsialem timer albo pobranie aktualnego czasu nacisniecia i opuszczenia klawisza do zmiennej globalnej i potem porownaie tych wartosci :D Eh, czemu ci ludzie nie czytaja dokladnie. ps ale mam fajny numer posta (222) ;)
-
Nie wiem o co dokladnie chodzi ale jesli odbierzesz komunikat WM_LBUTTONDOWN (subclassing) to zalaczasz timer(co np 100ms) lub spisujesz do jakiejs zmiennej aktualny czas i potem odbierasz komunikat WM_LBUTTONUP i sprawdzasz aktualny czas i porownujesz lub w tiemrze zwiekszasz jakas zmienna co "tykniecie" timera i jak siej zu pusci ten guzik (WM_LBUTTONUP) to konczysz tiemra i wynik jzu masz.
-
Bierzesz tego stringa i sprawdzasz znak po znaku od tylu az natrafisz na "\" i wtedy kopiujesz sobie wszystko od poczatku az do tego znaku (oczywisice bez niego). Mozna to wyciagnac z parametrów głównej funkcji programu WinMain ;)
-
Ja niestety nie moge - mam prace i czasu prawie wogole nie mam. To co zrobilem to jest na serwerze bo ja juz tego nie mam bo mi dysk niedawno padl i nic nie mam 8)
-
Z tego co pamietam to jzu gdzies w C++ ktos opisal jak uzupelnic te pola. Chyba to bylo w jakims arcie na winapi.org lub na forum lub mozliwe ze na innym forum otwidzialem. Ale napewno w ksiazce petzloda to jest. A raczej nie ma roznicy w wypelnianiu pol w c++ a w delphim.
-
Prosto: MCI & plik pomocy & PlgBlt & TOpenFilename lub proostu nazwiesz temat MCI a przy okazji zapytasz o ta reszte ;) Nie ma rzeczy niemozliwych ;) pozdrawiam ;] ps co do plików pomocy to wraz z delphi jest dolanczany darmowy kompilatorek plików pomocy "Microsoft Help Workshop", który u mnie znajduej się tutaj: C:\Program Files\Borland\Delphi6\Help\Tools
-
Nie wiem czy o to chodzi ale moze zmien to "c:\dupa.txt" na to "c:\\dupa.txt" ;)
-
Nie wiem ajk kto zrozumial mnie ale mi chodzi o to ze zrobic tablice intow i traktowac ja jako jedna wielka liczbe - czyli zabawa z bitami czy cos takiego ;] glebiej nad tym nie myslallem bo nie potrzebowalem tak wielkich liczb - 2 do 64 w zupelnosci wystarcza ;) (int64)
-
case WM_CLOSE: return 0; He he jak zrobsiz tak to na 100% ci sie nei wyłączy :D
-
Według mnie bool "zajmuje" 1bajt mimo ze mozna go zapisac w jednym bicie ;)
-
Ja off-topic. Ludzie nauczcie się tytułować swoje problemy z jakims sensem bo jak ktoś kto przegląda forum ma wiedziec mniewiecej o co wam chodzi jak zatytulujecie to tak "Parę pytań :)".
-
Ja off-topic. Ludzie nauczcie się tytułować swoje problemy z jakims sensem bo jak ktoś kto przegląda forum ma wiedziec mniewiecej o co wam chodzi jak zatytulujecie to tak "Kilka pytań".
-
Proste, w momecie pokazania okna modalnego uruchom timer i ustaw go na 2 sekundy i po pierwszym odebranu komunikatu WM_TIMER zamknij te okno i po wszystkim. Jak nei wiesz co to Timer to popatrz na artykuly na winapi.org bo chyba tam jest taki jeden.
-
Po pierwsze uzywasz WinSOcket czy komponetów C++Bulidera?? Zreszta idea jest taka. W momecie gdy klient polaczy sie z serwerem to klient powinien wyslac paczke z potrzebnymi informacjami np z ksywka, swoj nr itp. Gdy serwer dostanie taka paczke sprawdza w bazie (np tablica struktur) czy taki klient o tym numerze isnieje jesli istnieje to wysyla teraz do wszystkich zalogowanych klientow (lub tylko tym ktorzy maja go dodanego do listy komunikatora) paczke z informacja ze ktos sie dolaczyl wraz z jego numerem. Jak sprawdzic czy jaksi klient jest zalogowany? Prosto - przeszukujesz swoja baze danych (np tablice) i sprawdzasz który klient jest zalogowany (bo przy kazdym zalogowaniu klienta, serwer powinien uaktualniac baze i zmieniac jakas wartosc ktora jest odpowiedzialna za to czy klient jest zalogowany czy nie, np BOOL Zalogowany; - jesli ta zmienna jest TRUE to jest zalogowany a jak nie to nie) i potem mozesz spokojnie wysylac paczki tylko do tego który jest zalogowqany czyli do tego który ma np zmienna Zalogowany ustawiona na TRUE. Aha i w tej strukturce najlepiej jeszcze przechowywac jaksi uchwyt do połączenia klienta. Walne tutaj taki troche pseudokod: typedef struct UZYTKOWNIK { Ksywka char[16]; nr: int; bool zalogowany; JakisUchyt; }; UZYTKOWNIK users[10]; UZYTKOWNIK user; [...] WM_ODBIERZ_PACZKE: bool UzytkownikOKej = FALSE; odczytaj_paczke(&user); for(int i=0; i<10; i++) if(user.nr==users[i].nr) { users[i].zalogowany = true; UzytkownikOKej = TRUE; break; } if(UzytkownikOKej) { for(i=0; i<10; i++) if(user.nr!=users[i].nr && users[i].zalogowany) WyslijPaczke(users[i].JakisUchwyt, JakasPaczkaZInformacjamiOZalogowaniuNowegoUsera); { } }
-
Skoro i tak bedzie mial serwer to nei widze sensu rozglaszanie sie broadcastem. Porostu kazdy kilent zna adres serwera to po wlaczeniu laczy sie z serwerem i po polaczeniu serwer automatycznie rozsyla jakas konkretna wiadomosc do innych dostepnych klientow.
-
Jak juz Bialy wyzej napisal sam narazasz sie na smiesznosc. Ha ha ha
-
Eh wystarczy pomsylec. Jak tworzysz okno za pomoac CreateWindows to podajesz X,Y,szeroskoc i wysokosc okna - wiec wystarczy pobrac wielskoc ekranu i okno odpwoeidnio ustawic.
-
Ja tez wtrace swoej 3 slowa. To nie jest chyba forum o programwoaniu gier tylko o tworzeniu programow w winapi. Ale to tylko taka moja goopia wtraczka. Jak masz pytanai tgeo typu to zadawaj je na tym forum https://warsztat.pac.pl