Skocz do zawartości

Aspect

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Aspect

  1. Uważam, że pomysł stworzenia wspólnego projektu jest bardzo dobry (chętnie przyłożyłbym do czegoś takiego rękę). Musicie jednak pamiętać, że coś pisanego w tak dużej grupie trzeba bardzo dokładnie przemyśleć, ZAPROJEKTOWAĆ i rozdzielić pracę. Jedna albo dwie osoby musza:
    - zebrać wszystkie pomysły do kupy,
    - stworzyć jakąś wizje projektu,
    - podzielić całość na moduły,
    - przemyśleć i zaprojektować interfejsy między modułami,
    - pogadać z ludźmi - zorientować się co kto umie i w czym jest najlepszy,
    - rozdzielić obowiązki,
    - wyznaczyć terminy...
    ciezka praca ;-).
    Co do wyboru projektu - o komercyjnym to chyba nei ma mowy (strasznei długo można by wymieniać przeciwskazania).
    Projekt z baza danych - mógłby być, ale jest chyba odrobinę za trudny i co ważniejsze - podejrzewam, że rezultat był by mało efektowny.
    Dużo lepszym pomysłem wydaje mi się środowisko programistyczne dla jakiegoś darmowego kompilatora - myślę, że jest na miarę możliwości. W implementacji powinno być to bardzo proste, a zarazem na tyle rozbudowane, żeby pracy starczyło na wszystkich chętnych ;-).
    [dopisano:]
    Inne pomysły to:
    - menager plikow (cos jak total commander),
    - klient ftp
    - gra sieciowa (mmorpg) ale to trzeba by skombinowaćdobrych grafików i ludzi którzy wymyślą spójny świat i w ogole... raczej odpada
    - ...

  2. ptaku napisał:
    chodzi mi o to ze jesli mam juz uchwyt listbox'a to jak teraz wyswietlic w nim dyski i katalogi?

    No chyba napisałem wyżej. Teraz napiszę wprost:
    Musisz wysłać do tego okna komunikat LB_DIR, czyli piszesz w kodzie:
    SendMessage(hList,LB_DIR,(WPARAM) flagi,(LPARAM) string formatujący np "*.*");

    Zeby wyswietlic dyski piszesz we flagach DDL_DRIVES.
    Mysle ze jest to najłatwiejszy do zrealizowania sposób na wyświetlenie dysków i katalogów.

  3. Zeby uzyskac uchwyt dowolnej kontrolki należy użyć funkcji:

    HWND GetDlgItem(
      HWND hDlg,       // uchwyt rodzica kontrolki, czyli dialog boxa (to pewnie masz)
      int nIDDlgItem   // identyfikator kontrolki (w Twoim przypadku IDC_LIST1 lub 102)
    );

    Co do wyświetlania dysków i katalogów w ListBoxie to zainteresuj sie komunikatem LB_DIR (w MSDNie dość obszernei opisana).

  4. Z tego co piszą w MSDNie to funkcja wsprintf obsługuje tylko następujące formaty:

    c A single character. This sequence is interpreted as type WCHAR when the calling application uses the #define UNICODE compile flag and as type CHAR otherwise.
    C A single character. This sequence is interpreted as type CHAR when the calling application uses the #define UNICODE compile flag and as type WCHAR otherwise.
    d A signed decimal integer argument. This sequence is equivalent to the i sequence.
    hc, hC A single character. The wsprintf function ignores character arguments with a numeric value of zero. This sequence is always interpreted as type CHAR, even when the calling application uses the #define UNICODE compile flag.
    hd A signed short integer argument.
    hs, hS A string. This sequence is always interpreted as type LPSTR, even when the calling application uses the #define UNICODE compile flag.
    hu An unsigned short integer argument.
    i A signed decimal integer. This sequence is equivalent to the d sequence.
    lc, lC A single character. The wsprintf function ignores character arguments with a numeric value of zero. This sequence is always interpreted as type WCHAR, even when the calling application does not use the #define UNICODE compile flag.
    ld A long signed decimal integer. This sequence is equivalent to the li sequence.
    li A long signed decimal integer. This sequence is equivalent to the ld sequence.
    ls, lS A string. This sequence is always interpreted as type LPWSTR, even when the calling application does not use the #define UNICODE compile flag. This sequence is equivalent to the ws sequence.
    lu A long unsigned integer.
    lx, lX A long unsigned hexadecimal integer in lowercase or uppercase.
    s A string. This sequence is interpreted as type LPWSTR when the calling application uses the #define UNICODE compile flag and as type LPSTR otherwise.
    S
    A string. This sequence is interpreted as type LPSTR when the calling application uses the #define UNICODE compile flag and as type LPWSTR otherwise.
    u An unsigned integer argument.
    x, X An unsigned hexadecimal integer in lowercase or uppercase.

    Jak widać nie ma wśród nich odpowiedniego dla liczb zmienno przecinkowych (chociaż bardzo mnie to dziwi). Mozesz sprobowac zamiast wsprintf uzyc sprintf - z niąpowinno być wszystko w porządku.

  5. Najzabawniejsze jest to, ze ptaku wysłał mi wczoraj (no właściwie to już dzisiaj bo ok 2:00) ten kod, ja go wkleiłem do siebie i niby jest wszystko dobrze, ale menu sie nie wyswietla. Pewno jest jakiś mały błąd, i trzeba się dokładnie wgłębić w kod.

    ptaku wklej tutaj ten kod może inni coś znajdą (ja niestety wiadomość od Ciebie skasowałem (ale nei wiem jakim cudem) bo dziś już jej nie mam, w związku z czym nie mam też tego kodu i nie moge wkleić).

    Ps. To na pewnio nie jest wina tego, że masz WinXP.

  6. Ten plik def to tylko BCB obsluguje (nie widzialem nigdy takiego pliku w moich projektach)? Czy można go dodac/dolaczyc do projektu w kazdym kompilatorze? I jak sie to robi? 9_9
    Z gory dzieki za wyjasnienie.

  7. Ja podejrzewam, ze xorek chce wyswietlic jakis bardzo dlugi tekscik (nie mieszczący się na jednym ekranie) w okienku i nie chce, zeby ktos ten tekscik mogl sobie wyciac i wkleic. Ale szczerze powiem, ze nie wiem po co takie kombinacje - nie wystarczy Ci, ze nie bedzie mozna wprowadzac zmian? Jak sie nei chcesz bawic SubClassingiem to sobie zrob edita z WS_DISABLED ten tekst (mimo, ze jest szary na szarym tle) calkiem niezle widac.

  8. Standardowo takiej kontrolki nie ma (jest co prawda styl BS_FLAT czy jakoś tak, ale nie wygląda tak jak jak napisałeś w poście, jest za to baaaardzo brzydki ;) ). Jedyna droga to BS_OWNERDRAW.

  9. A weź sobie spróbuj w Visualu utworzyc nowy projekt (Win32 Application), tylko nie pusty, ale zeby to bylo "Typical "Hello World" Project" dla VC++ 6.0, lub nie "Empty Project" dla VC++ .NET . One maja już szkielet gotowej aplikacji razem z menu.
    Możesz też wkleić tu kod swojego programu - może problem polega na czym innym.

  10. Mi sie nie podoba to (jestem strasznie leniwy), że nie ma gotowych szkieletów aplikacji. W Dev-Cpp jest np. gotowy szkielet aplikacji pod Windows, z wszystkimi rzeczami, które i tak w każdym programie trzeba umiescic - rejestracja klasy, petla komunikatow, funkcja obslugi komunikatow, nie wspominajac juz o Wizardzie w Icc, który właściwie pisze cały szkielet dowolnej aplikacji za użytkownika. Takie szkielety nie dosc, że bardzo ułatwiają pracę (można od razu przejść do pisania właściwego kodu programu), to jeszcze można się z nich bardzo wiele nauczyć, przeglądając te gotowe kody (gorąco polecam Icc do celów edukacyjnych mimo, że jako środowisko nie przypadlo mi do gustu).
    Brak zakładki z widokiem klas, funkcji i zmiennych jest już bardzo uciążliwy. Pwenie dlatego, że wszystkie dotychczasowe środowiska go miały i jestem przyzwyczajony. Myślę, że tutaj taką rolę ma spełniać opcja zwijania kodu funkcji (baaardzo fajna), ale co nawyki to nawyki ;) .
    Co do Resource Editora, to rzeczywiście jest ewenement - MinGw jest jedynym darmowym środowiskiem jakie znam, które ma coś takiego.
    Bawilem się tym MinGWem ;) dopiero jakieś 15 min. i zamierzam jeszcze go troche potestować, ale chyba na razie nie "porzuce" jeszcze dla niego Dev-Cpp i Visuala.

  11. Są dwa bardzo proste sposoby, ale oba mają swoje złe strony:
    1. Możesz nadac Editowi styl WS_DISABLED, ale wtedy tekst będzie szary
    2. Możesz zamiast Edita dać Statica i nadać mu rozszerzony styl WS_EX_CLIENTEDGE, co spowoduje, że będzie on wklęsły (podobnie jak edit), ale w WinXP Edity nie są wklęsłe i tam ten Edit będzie się wyróżniał
    Zeby uniknąć tych niedogodności musiałbyś się zainteresować SubClassingiem (na stronei jest to opisane), ale z tym jest odrobinę więcej "gimnastyki" ;-).

  12. Cytat
    Czakol napisał:
    Zna ktoś może stronke ze źródłem

    Heh1. Tak sie akurat złożyło, że w moim przedostatnim poście akurat jest ten link :)  (UPX ma tam inny kolor).

    Cytat
    Twardy napisał:
    Oczywiście, jeśli zasób ma ikonę to UPX jej nie pakuje, bo by była niezauwarzalna w eksploatorze windows.

    Heh2. To mi sie chyba spakowala, bo po skompresowaniu mojego programu z ikonką UPXem, ikona mi sie nie wyświetla i windows pisze, że w tym execu nie ma ikony. :?

    Heh3. Próbowałem skompresować aplikację PELockiem, ikona jest, ale to wersja demo ;)

  13. mistyk9001 napisał:
    odczyt z dysku jest bardzo wolny w porownaniu z czasem jaki potrzeba na zdekodowanie tego pliku - i to caly mechanizm

    Faktycznie - o tym zupełnie nie pomyślałem. :$
    Chyba na poważnie zainteresuję się tym UPXem, bo widać, że ma same korzyści. 8)
    Dzieki za wyjaśnienie!

  14. Nie no, UPX to nie jest taki archiver jak RAR albo ZIP. On pakuje tylko exeki i to tak zeby po skompresowaniu wyglądały jak zwykły program. Po uruchomieniu takiego exeka, właściwy program się wypakowuje (powinien w czasie niezauważalnym dla użytkownika) i ładuje do pamięci.
    Nie wiem jak działa ResHacker ale wydaje mi się, że on po prostu wyciąga różne resourcy z plików exe na dysku, więc jeżeli program jest spakowany to ResHacker może nie rozumieć zapisanych w ten sposób danych. Ale jeżeli jakiś programista zna (i potrafi wykorzystać) metodę kompresji stosowaną przez UPX (co nie troudno osiągnąć bo żródła UPXa są jawne) to może napisać program króry wyciąga zasoby nawet ze spakowanych programów.
    Czyli: "Dla chcącego nic trudnego!" - Jak ktoś będziebardzo chciał wyciągnąćzasoby z Twojego programu to je wyciągnie. ;-)

  15. mistyk9001 napisał:
    plusem pakowania jest tez fakt ze pliki sie szybciej uruchamiaja

    hmmm :o
    Dziwne mi sie to wydaje. Zawsze myślałem, że jak jest coś spakowane, to musi się rozpakować przed uruchomieniem. A jak wiadomo takie rozpakowanie zajmuje odrobinkę czasu. Czyli teoretycznie rozpakowanie+uruchomienie programu spakowanego powinno zajmowac wiecej czasu niz samo uruchomienie sie programu niespakowanego. (Co prawda na stronie UPXa napisane jest, ze czas rozpakowania programu jest znikomo mały, ale mimo wszystko...)
    Czy to było napisane z ironią, a ja nie zrozumiałem? :?
    Jeżeli nie, to wytłumacz mi, proszę, ten mechanizm.

  16. Kompilacja Release nie jest tylko i wyłącznei odchudzoną wersją Debug. Wersja Debug jest większa dlatego, że zawiera dodatkowe informacje pozwalające łatwiej znaleźć błąd w fazie tworzenia aplikacji (asercje i inne pierdoły), a nie dlatego, ze jest niezoptymalizowana (w sensie nieodchudzona). Dev C++ nie generuje wersji Debug (w sensie takim jak wyżej ;-) ), gdyż jest to dość proste środowisko, on generuje od razu wersje Release ;-). A rozmiar 99kB to i tak jest nieduży w porównaniu np. do szkieletowej aplikacji MFC z dolinkowanimi statycznie bibliotekami (16MB).

  17. Ja znam jedynie sposób, żeby zmienić czcionke w kontrolkach DialogBoxa (czyli jest ona dobra tylko dla aplikacji DialogBased).
    DialogBoxa tworzymy korzystając z szblonu w pliku zasobów. W szblonie tym dodajemy linjke:

    [b]FONT[/b] 20, "Arial", 0, 0, 0x0

    gdzie: pierwszy parametr to wielkosc, drugi "rodzina" czcionki, czwarty to pochylenie (1=kursywa), reszta - nie wiem 9_9 . Nalezy jednak pamietac, ze zmiana rozmiary czcionki zmienia wielkosc jednostki w jakich mierzy sie rozmiar dialog boxa. Czyli, jezeli dacie taka czcionke jak wyzej, to dialog box bedzie wygladal, jak by byl stworzony dla niewidomych ;) .

  18. Za obsluge ComboBox sa odpowiedzialne komunikaty zaczynajace sie od CB_, CBN_. To sa wszystkie komunikaty obslugujace ComboBoxa :S :

    CB_ADDSTRING - dodaje do listy nowa pozycje
    CB_DELETESTRING
    CB_DIR
    CB_FINDSTRING
    CB_FINDSTRINGEXACT
    CB_GETCOUNT

    CB_GETCURSEL - sprawdza, która pozycja jest zaznaczona
    CB_GETDROPPEDCONTROLRECT
    CB_GETDROPPEDSTATE
    CB_GETDROPPEDWIDTH
    CB_GETEDITSEL
    CB_GETEXTENDEDUI
    CB_GETHORIZONTALEXTENT
    CB_GETITEMDATA
    CB_GETITEMHEIGHT
    CB_GETLBTEXT
    CB_GETLBTEXTLEN
    CB_GETLOCALE
    CB_GETTOPINDEX
    CB_INITSTORAGE
    CB_INSERTSTRING
    CB_LIMITTEXT
    CB_RESETCONTENT
    CB_SELECTSTRING
    CB_SETCURSEL
    CB_SETDROPPEDWIDTH
    CB_SETEDITSEL
    CB_SETEXTENDEDUI
    CB_SETHORIZONTALEXTENT
    CB_SETITEMDATA
    CB_SETITEMHEIGHT
    CB_SETLOCALE
    CB_SETTOPINDEX
    CB_SHOWDROPDOWN
    CBN_CLOSEUP
    CBN_DBLCLK
    CBN_DROPDOWN
    CBN_EDITCHANGE
    CBN_EDITUPDATE
    CBN_ERRSPACE
    CBN_KILLFOCUS
    CBN_SELCHANGE
    CBN_SELENDCANCEL
    CBN_SELENDOK
    CBN_SETFOCUS
    WM_COMPAREITEM
    WM_DRAWITEM
    WM_MEASUREITEM

    Z nazwy mozna sie domyslic co dany komunikat robi. ;)

×
×
  • Utwórz nowe...