Skocz do zawartości

Surprise

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Wszystko napisane przez Surprise

  1. https://www.winapi.org/index.php?option=content&task=view&id=130&Itemid=30...art na stronie...zanim zapytasz poszperaj trochę
  2. Surprise

    Jeszcze raz MySql

    Nie będę się tu wymądrzał bo jeszcze się nie brałem za sql w c++, ale znalazłem taki oto kurs: https://www.utopia.pl/applegreen/procki/mysqlapi.php - może on coś pomoże ;) Pozdrawiam
  3. Surprise

    Ping

    Hmmm...kiedyś kiedy jeszcze był dział download, było źródło programu typu ping...napisał je bodajże Dracula, ale nie jestem pewnien...cóż do tego najlepiej wykorzystać protokół udp, jednak nie mam nigdzie gotowej funkcji i czasu (hyh), dlatego dam ci linka do fajnego kursu: https://www.keeller.kompozytor.net/ws_wprowadzenie.php Pozdrawiam
  4. Surprise

    rozciaganie obrazka

    No to może trochę kodu...bo w jasnowidza mi się nie chce bawić...hyh, pokaż jak wyświetlasz bitmapę, najlepiej całą procedurę komunikatów...
  5. Surprise

    odswiezanie okna

    Witam, nie rozumiem tego zdania w nawiasie...hyh mógłbyś jakoś to przystępniej wytłumaczyć. Do wyświetlania bitmap polecam statica (tworzysz kontrolkę tego typu ze style SS_BITMAP i SS_IMAGEREALSIZE, czy jakoś tak i jako nazwę podajesz bitmapkę w zasobach). Co do metody jaką wyświetlasz. W zdarzeniu WM_PAINT wyświetlasz bitmapkę w odpowiednim miejscu i jest po kłopocie, tj, nie powinno być problemów. Funkcja która odświeża okno (wywołuje zdarzenie WM_PAINT) to InvalidateRect(hwnd, NULL, NULL, true), lub po prostu wysyłasz nazwę wiadomości funckją SendMessage. Jeśli masz jakieś pytania to wal śmiało, ale tak jak mówiłem, mnie roboty jest ze staticem ;) Pozdrawiam
  6. [Zmarnowałem cały dzień], nie no, nie zmarnowałeś tylko myślałeś nad tym...nawet nie wiesz ile doświadczenia ci przybyło...heh. Nie dziwie ci się, że zdawało ci się, że dla każdej zakładki jest osobne okno...to jest logiczne...na przykład w VB czy Delphi kontrolki tab mają tak ładnie porobione dla każdej zakładki okna...potem się na nich rysuje i jest git. Dlaczego serwis wolno działa ? Bo tak..hyh
  7. Witam, tekst pobierasz i ustawiasz za pomocą GetWindowText i SetWindowText...poszukaj o tych funkcjach w dokumentacji, którą znajdziesz na ftp tej strony (plik hlp.) Co do okien...zależy jak chcesz z nich korzystać. Jednak polecam zapoznać się z oknami dialogowymi (art o tym znajdziesz na tej stronie). Co do tworzenie drugiego okna na podstawie wypełnionej już struktury wndclass. Po prostu jeśli ją już raz wypełniłeś i zarejestrowałem funkcją RegistryClass to zmień pola, które nie pasują do nowego okna...(czyli klase i funkcje obsługi komunikatów, jeśli nie chcesz żeby okno zachowywało się tak jak to pierwsze) i jeszcze raz zarejestruj. Potem utuwórz już standardowo nowe okno, którego klasę będzie stanowiła nazwa klasy, którą podałeś podczas drugiego wypełniania naszej strukturki. Wiem, może to wszystko trochę zamotanie napisałem...ale może jakoś zrozumiesz ;) Pozdrawiam i życzę owocnej pracy z dokumentacją (prawdę mówiąc jeśli się z nią nie zapoznasz i nie nauczysz korzystać to...cóż...każdy postrzega to nieco inaczej) [Jak będziesz miał problemy to pisz, tutaj albo na moje gg].
  8. Witam w procedurze komunikatów musisz obsłużyć wiadmość WM_COMMAND. WM_COMMAND wNotifyCode = HIWORD(wParam); // kod zdarzenia notify wID = LOWORD(wParam); // identyfikator okna hwndCtl = (HWND) lParam; // uchwyt okna czyli z pola wParam wyciągaz najpierw identyfikator okna, które chcesz obsłużyć, w twoim przypadku będzie to 101. Potem sprawdzasz czy zdarzenie notify jest równe BN_CLICKED i wykonujesz odpowiednie operacje. W praktyce wygląda to mniej więcej tak: //główna pętla switch case WM_COMMAND: if((LOWORD(wParam) == 101) && (HIWORD(wParam) == BN_CLICKED)) { //tutaj funkcje, które mają być wykonane po wciśnięciu buttona } break ; Jeśli coś jest niejasne to pytaj ;) Pozdrawiam
  9. Surprise

    Menu kontekstowe

    Witaj gesiek, niestety nie miałem czasu odpowiedzieć na to pytanie na forum eksperta...ale miło, że się tu zalogowałeś...hehe...taaak po raz kolejny przekonujemy się, że codeproject.com to porządna strona...co do wywołania odpowiedniej funkcji - pomęcz się trochę, masz przecież źródła, jak już znajdziesz odpowiedź będziesz odczuwał satysfakcje no i podziękujesz, że nie udzieliliśmy ci gotowego sposobu :P Pozdrawiam ;)
  10. Ja tam zawsze daty przekzuje jako %d, a może coś z ciągiem formatującym nie tak, może przekaż go bezpośrednio...nie wiem ;) pozdrawiam
  11. GDI+, czy jakoś tak, która jest opisana na tej stronie bodajże przed Salwadore...jednak nie bawiłem się w takie rzeczy i nie znam gotowych bibliotek...pewnie w necie pełno tego cholerstwa jest ;)
  12. Surprise

    zmiana kolorow

    masz bitki zapisane w imageData i robisz tak: unsigned char char tempRGB ; //zmienna zamiany składowych unsigned char * imageData ; //zmienna w których masz bitmape //no i teraz petelka - zamienia składowe formatu RGB na GBR for(imageIdx = 0 ; imageIdx < bitmapInfoHeader.biSizeImage ; imageIdx+=3) { tempRGB = imageData[imageIdx] ; imageData[imageIdx] = imageData[imageIdx +2] ; imageData[imageIdx + 2] = tempRGB ; } //mam nadzieję że się nie pomyliłem :P i jest git...w biSizeImage miałem zapisany rozmiar bitmapy, tą strukturę wykorzystuje (podobnie jak zamiana z RGB na GBR) do zapisu bitmapki do pliku, myle, że też ci było do tego potrzebne... ;) pozdrawiam
  13. Jednak czy wygaszanie monitora działa na systemach xp. Kiedyś pisałem taki niezbyt przyjazny program i u mojego kumpla nie odegrało się do końca całe przedstawienie ;) Jak jest już wygaszanie to może też włączanie wygaszacza się przyda: SendMessage(hWnd, WM_SYSCOMMAND, SC_SCREENSAVE,0) ; Co do pobierania informacji...hmm...część z nich, chociaż nich może jakoś uda się wyłuskać funckją GetDeviceCaps...ale to tylko liczby i takie tam..może się przyda..opis znajdziesz w helpie. Obacz sobie w helpie rozdział System Infromation Functions...coś tam może znajdziesz. Pozdrawiam
  14. Witam ponownie Rzeczywiście ten mój pierwszy sposób jest baaardzo zły...jednak żeby wyjść z tego wszystkiego z honorem ;) zmarax masz tutaj funckje: bool WstawNowaLinia(char * tekst, HWND hEdit) { char nowalinia[255] ; int line, line_count, line_len, start ; if((tekst[0] != (char) NULL) && (hEdit)) { line_count = SendMessage(hEdit, EM_GETLINECOUNT, (WPARAM) 0, (LPARAM) 0) ; line = SendMessage(hEdit, EM_LINEINDEX, (WPARAM) (line_count - 1), (LPARAM) 0) ; line_len = SendMessage(hEdit, EM_LINELENGTH, (WPARAM) line, (LPARAM) 0) ; start = line + line_len ; SendMessage(hEdit, EM_SETSEL, start, start) ; if(line) wsprintf(nowalinia, "\n%s", tekst) ; else wsprintf(nowalinia, tekst) ; SendMessage(hEdit, EM_REPLACESEL, (WPARAM) 1, (LPARAM) nowalinia) ; return true ; } return false ; } Wyjaśnienie: Jeśli wszystko zostało prawidłowo przekazane to najpierw pobieramy sobie ilość lini, a potem (ideks jest liczony od zera ilość linie nie) za pomocą EM_LINEINDEX otrzymujemy odpowiednie współrzędne lini. Pobieramy długość tej linii i (w start) otrzymujemy pozycję ostatniego znaku w tekście..ostaniego znaku(!!!!!!!!!!)....kurde..a nie lepiej zrobić tak: bool WstawNowaLinia(char * tekst, HWND hEdit) { char nowalinia[255] ; int start ; if((tekst[0] != (char) NULL) && (hEdit)) { start = (GetWindowTextLength(hEdit) -1) ; SendMessage(hEdit, EM_SETSEL, start, start) ; if(start != -1) wsprintf(nowalinia, "\n%s", tekst) ; else wsprintf(nowalinia, tekst) ; SendMessage(hEdit, EM_REPLACESEL, (WPARAM) 1, (LPARAM) nowalinia) ; return true ; } return false ; } Pobieramy ilość tekstu i odejmuje jeden (w końcu ma być to index, liczony od 0). No a potem to już wszystko jasne... Jeśli chcesz zrobić tak jak w gg...to nie ma problemu. Ustawiasz sobie flage ES_READONLY (w gg można zaznaczać). Potem jakiś przycisk, który będzie dodawał nowe linie. Oto przykładowa obsługa zdarzenia dla takiego przycisku: char pomoc[255] ; //---- case WM_COMMAND: if(wParam == 100) //załużmy, że id tego przycisku to 100 { GetWindowText(hZdanie, pomoc, 255) ; //pobieramy sobie tekst do dodania WstawNowaLinie(pomoc, hDialog) ; //wstawiamy go do okna dialogu (tak jak w gg ;)) SetWindowText(hZdanie, "") ; //czyścimy pole do wprowadzania tekstu } break ; //---- break ; I nie wciskać kitu, że nie działa bo sprawdzałem...hehe I to tyle. Pozdrawiam ;)
  15. 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
  16. Zmarax...zrób tego richedita daj mu ES_READONLY i to co napisałem w pierwszym poście...będzie działać...swoją drogą zastanawiam się czy to co działa na richedicie w tym wypadku nie zadziała na zwykły edit...hmm...próbuj zmarax, próbuj ;)
  17. Tak z INITCOMMONCONTROLEX też miałem problemy...wejdź do pliku commctrl.h...niektóre bloki kodu zostały opatrzone kompilacją warunkować...ja wywaliłem na chama: # define _WIN32_IE 0x0600 i jest git ;) pozdrawiam
  18. Tak, tak, jeszcze lepiej pobrać uchwyt do pulpitu i EnableWindow... zablokować pulpit...wtedy w ogóle nie wyświetli mu się menadżer... ;)
  19. Surprise

    Kilka pytanek

    Hej, widzę, że cię zainspirował flashget...niestety nie ściągnę go teraz i zobaczę o co dokładnie ci chodzi..hehe Co się tyczy punktu 2, czyli tzw. rozsuwania kontrolki...ktoś kiedyś robił taki program za starych dobrych czasów...split...czy jakoś tak... Najlepsza kontrolka do wyświetlania listy to chiba ListView...pewno są gdzieś w sieci gotowce...w delphi jest taki komponent...co do pobierania listy plików w katalogu...odeślę cię do arta Nicona na temat wyszukiwania plików..z którego powinieneś wyłuskać potrzebne informacje...wg mnie powinieneś również więcej własnymi siłami szperać w necie i nie zadawać tyle pytań naraz...hehe ;) pozdrawiam
  20. Jak WM_CLOSE nie dział...(nic dziwnego ;)) to spróbuj WM_QUERYENDSESSION, czy WM_ENDSESSION poszukaj opisu tych komunikatów....może siem uda
  21. Wiesz co ja tu kombinuje a może po protu dopisać tekst ale na początku wwalić mu \n ? sprawdź to powinno zadziałac... ;) pozdrawiam
  22. Na 98 na bank zadziała, ale xp nie mam (i tak by mi nie poszedł ;))....myślę, że może się to nie udać...na NT chiba nie pójdzie...winc skoro na NT to na xpeku też..nie wiem...NIECH KTOŚ SPRAWDZI...bo to jest CIEKAWE :!: pozdrawiam
  23. Jeśli richedit i wogle edit ma ustawione enabled na true to jest wszystko w porządku...nie rozumiem...znaczy, że jest aktywny, jakby miał enabled false to wtedy byłby nieaktywny...czy kod wtedy zadziała...myśle, że powinien zadziałać...ale nie jestem pewnien na 100% - sprawdź...hehe...jeśli nie chcesz żeby można było kliknąc i nic zmieniać w richedicie to ustaw flage EM_READONLY...a właściwie to nie mieszam już bo do końca nie wiem do czego ci to potrzebne i jaki chcesz osiągnąć efekt..hehe...możesz potraktować to jako pytanie..ale nie musisz... ;) pozdrawiam
  24. Ja również polecam Deva...to bardzo fajny kompilator i jak napisał exe DARMOWY!!!!!!!!! Bez ponoszenia opłat ? no pewnie...to jest nawet logiczne...hehe
  25. Na EditBoxie też pójdzie..tak mi się zdaje...o ile help nie kłamie ;) pozdro
×
×
  • Utwórz nowe...