Nemo
-
Postów
0 -
Dołączył
-
Ostatnio
Nigdy
Typ zawartości
Profile
Fora
Kalendarz
Articles
Pliki
Posty napisane przez Nemo
-
-
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 ;)
-
Spoon napisał:To chyba nie jest zabronione :) , zwiększa szansę uzyskania odpowiedzi.
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 -
Kacz napisał:Hehe no właśnie tego się obawaiłem:( tzn., że będe musiał użyć timera:D
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.
-
Proktor napisał:Jak (korzystając z WinAPI) można uzyskać ścieżkę do pliku (bez nazwy pliku czyli np. "c:\windows\") znając ścieżkę wraz z nazwą pliku (np. "c:\windows\win.ini").
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).
Proktor napisał:Jak uzyskać ścieżkę do programu (tego który piszę).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.
-
Kilka pytań (a jak to miałem nazwać:P)
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)
-
szatkus napisał:1. Jak zrobić, żeby po kliknięciu na krzyżyk program się nie wyłaczał?
case WM_CLOSE: return 0;
He he jak zrobsiz tak to na 100% ci sie nei wyłączy :D
-
-
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.
-
RUF3K napisał:ale mi to rozwiozanie , na kazdym innym monitorze (z innom rozdzielczosciom oczywiscie)bedzie gdzie indziej !!!!!!!!!!!!!!!!!! hahaha
help me please!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
-
m-rog napisał:A jaka jest nazwa tematu ??? :?
eh jakos nie pomysalem
Za mało miejsca w danych kontrolki
w C
Napisano
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: