Skocz do zawartości

Complex

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Complex

  1. Z tego co sie orietuje to w winXP jedynym sposoben jest napisanie sterownika ktory dobiera sie do kernela. To jest wyzsza szkola jazdy. Poszukaj cos na grupach. Ale po polsku raczej nic nie znajdziesz. To nie bedzie proste zadanie ;)

    powodzenia

    P.S. Jak cos znajdziesz ciekawego to daj znac. Sam chetnie dowiem sie czegos na ten temat.

  2. Postaram sie to blizej wyjaśnic.
    F. SetViewportOrgEx sluzy do przesuwania punktu (0,0) Przy czym podajemy wartośc o jaka ma sie przesunąć ten pkt. w jednostkach urzadzenia. Czyli w przypadku ekranu sa to piksele a w przypadku drukarki sa to punkty - kazda drukarka ma swoje parametry ilości punktow na cal. W taki przypadku bysmy przesowali punkt (0,0) wlasnie w tych punktach urzadzenia.

    SetWindowOrgEx sluzy juz nie do zmiany punktu (0,0) ale do przesuwania okna o okreslona wartosc podana w jednostkach logicznych - czyli takich jakie ustawilismy f. SetMapMode.

    Polecam potestować rozne opcje i przekonac sie jak to tak na prawde dziala.

    Co do MM_ISOTROPIC i ustawiania jednostek takich jak cm czy pixele to oczywiscie mozna to zrobic. Zastanawiam sie jednak po co skoro inne tryby robia to automatycznie. Jak sie jednak ktos uprze to wystarczy pobrac rozdzielczosc urzadzenia i odpowiednio sobie przeliczyc na pixele. Musze przyznac, ze jeszcze nigdy nie kozystalem z trybu MM_ISOTROPIC i nie wiem jak to dokladnie dziala. Jak masz petzolda. To dokładnie poczytaj i poprobuj. Droga prob i bledow najlepiej poznasz zasade dzialania.

    ad. P.S. Nasza strona jest przedsiewzieciem w pelni niekomercyjnym. Lepiej nie bede mowil, na czym pracuje nasz serwer i z jakiego lacza kozysta. W niedlugiej przyszlosci powinien poprawic sie odbior naszej strony.

    pozdrowka :)

  3. DWORD to jest to samo co unsigned long. Wiec podajesz w f. wsprintf %lu.

    Powodzenia.

    P.S. Kto pyta nie bladzi ale postaraj sie zaznajomic z helpem. Wiele problemow bedziesz mogl rozwiazac sam, a o to wlasnie chodzi. :)

  4. Mozna to tez zrobić ladując bitmapy na poczatku programu. I wyświetlac je w odpowiednim miejscu. Sprawdzasz sobie gdzie uzytkownik kliknal (w ktory prostokat) i tam wyswietlasz bitmapke. Zapewne ile ludzi na forum to kazdy moglby inna metode wskazac. Wszystko zalezy od Ciebie. Jak bedziesz miala z czyms problem to pisz smialo. Kawalek kodu i dobrze sformulowane pytanie to polowa odpowiedzi ;)

    pozdro

  5. Pobaw sie priorytetami procesow. Przegladnij sobie jak w WinXP liste procesow i tam mozesz zmieniac recznie priorytet. Nie polecam priorytetu czasu rzeczywistego przy bardzo wymagajacym programie bo tak Ci zarznie system, ze nie bedzie odpowiadal na zdarzenia systemu. Poczytaj o procesach.

    pozdro

  6. Generalnie w C stosuje sie rzutowanie za pomocą nawiasow przed nazwa zniennej ktora chcemy rzutować

    np

    int a, b, c;

    a = (long)b + (long)c;

    oczywiscie to tylko przyklad i nie ma sensu konwersja inta do longa gdy w rezultacie i tak zapiszemy do inta.

    W CPP stosuje sie static_cast i dynamic_cast. Wiecej o rzutowaniu w CPP poczytasz tu
    https://www.intercon.pl/~sektor/cbx/appendix/casting.html Przegladnij tez reszte strony https://www.intercon.pl/~sektor/

  7. U mnie w CommCtrl.h STATUSCLASSNAME jest zdefiniowane tak:

    #ifdef _WIN32
    #define STATUSCLASSNAMEW        L"msctls_statusbar32"
    #define STATUSCLASSNAMEA        "msctls_statusbar32"
    
    #ifdef UNICODE
    #define STATUSCLASSNAME         STATUSCLASSNAMEW
    #else
    #define STATUSCLASSNAME         STATUSCLASSNAMEA
    #endif
    
    #else
    #define STATUSCLASSNAME         "msctls_statusbar"
    #endif
    

    Moze nie masz po prostu tego naglowka. Jak to rozwiaze Twój problem to sciagnij sobie najnowsze SDK i podlacz do swojego kompilatora. Nie bedziesz mial wiecej podobnych problemow.

    P.S. Mozesz tez uzyc funkcji CreateStatusWindow.

  8. guest napisał:
    RegSetValueEx(k, valname, 0, REG_SZ, source, lstrlen(source)+1); 

    Wlasnie o to tu chodzi. Kompilator BCB jest mnie restrykcyjny i dokonuje konwersji niejawnej. GCC jest bardziej restrykcyjny i nie pasuja mu te typy. Przedostatni argument f. jest u Ciebie typu char* a powinien byc zgodnie z dokumentacja typu CONST BYTE *

    Sprobuj dodac rzutowanie (CONST BYTE *)source a powinno pojsc.

    powodzenia

  9. Stanowczo odradzam zmienianie rozdzielczosci w programach. Chyba, ze piszesz jakąś grę i jest to niezbedne. Do gier natomiast polecam OpenGL albo DirectX. W tych interface'ach podczes inicjalizacji podajesz rozdzielczosc. Generalnie aplikacje okienkowe nie powinny mieszac w rozdzielczosci.

    pozdro

  10. Wydaje mi się, ze zapomniałeś dodać styl WS_VISIBLE. Albo pozniej wykonać

    ShowWindow(hCtrl, SW_SHOW);

    Jak czegos nie zauwazylem to ktos mnie poprawi. Ale dla mnie wyglada ok.

    Powodzenia

  11. To Ci sie moze przydać :) reszta to tylko petla iteracyjna i masz gotowe algo. Powodzenia :)

    int fYearLeap(int year)
    {
            if((year%4) != 0) return 0;
            else
                    if((year%400) == 0) return 1;
                    else
                            if((year%100) == 0)return 0;
    
            return 1;
                            
    }
    
    int fGetNrdayofmonth(int month, int year)
    {
    
            if(month == 1 || month == 3 || month == 5 ||month == 7 ||
                    month == 8 || month == 10 || month == 12)
            {
                    return 31;
            }
            if(month == 4 || month == 6 || month == 9 || month == 11)
            {
                    return 30;
            }
            if(month == 2 && fYearLeap(year) == 1)
            {
                    return 29;
            }
            else
            {
                    return 28;
            }
    }
    
  12. /*
    if(SetScrollRange(hscroll,SB_VERT,1,4,false)==0)
    MessageBox(NULL,"no range","",NULL);
    if(SetScrollPos(hscroll,SB_VERT,2,false)==0)
    MessageBox(NULL,"no pos","",NULL);
    */

    Funkcje SetScrollRange i SetScrollPos przyjmują jako pierwszy parametr uchwyt okna ktore ma te paski przewijania a nie uchwyty paskow przewijania.

    Podobnie tutaj

    case WM_VSCROLL:
    hscroll=(HWND)lParam;
    switch(LOWORD(wParam))

    lParam to uchwyt kontrolki.

    Dla f. SetScrollRange i ...Pos podawaj uchwycik okna rodzica dla tych paskow - u Ciebie - hDlg.

    Zainteresuj sie SetScrollInfo() ma wieksze mozliwoscie przez co ladniej wyglada.

    Powodzenia

  13. NIe sprawdzalem calosci ale pierwszy blad jaki mi sie rzucił w oczy to uchwyt do tego scroll bar'a. Przy kazdym kolejnym komunikacie nie masz uchwytu do tego scroll'a. Zrob tak:

    ...
    static HWND hscroll;
    ...
    

    wtedy twoj uchwyt nie bedzie gubiony.

    pozdro

  14. sedef napisał:
    Moja rada: nie ma co zdawać matury z infy, bo tylko stracisz czas. Tak jest, że wiekszość (wszystkie :/ ) uczelnie wyzsze wymagają zdania matematyki i (czasem) fizyki w stopniu (najczęściej) rozszerzonym.
    Więc osobiście odradzam tejże matury, lepiej pouczyć się fizyki i matmy (dobre oceny z egzaminu dojrzałości z tych przedmiotów gwarantują wstęp na większość wydziałów na naszych uczelniach)
    Na www.cke.edu.pl masz informatory maturalne.

    p.s. jeśli sie uparłeś na maturę to wybierz sobie jako język LISP-a lub Ocaml-a, ewentualnie D lub Fortran-a, zrobisz im trochę kłopotów.

    pzdr

    Zgadzam sie z sedefem. Matma to podstawa na pozadnej uczelni technicznej. Jak juz sie dostaniesz to trzeba sie jeszcze utrzymac, a sporo osob odpada wlasnie przez matematyke (m.in.) po pierwszym roku.

    Powodzenia

  15. To bardzo sie ciesze Nicon :D Teraz jest do zrobienia wizard do konwertowania. Czyli cos co poprowadzi uzytkownika za raczke przy konwertowaniu. Ja bede teraz pracował nad drugim systemem konwersji, bo jest napisany dla DDB a nie dla DIB'a. To raczej dlugo nie zejdzie - przynajmniej tak mysle. I trzeba przygotować program do wypuszczenia w wersji beta ;) To chiba wszyscy lubia :)

  16. LPCTSTR This type is declared in Winnt.h as follows:

    #ifdef UNICODE
    typedef LPCWSTR LPCTSTR;
    #else
    typedef LPCSTR LPCTSTR;

    a z koleji

    LPCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.
    This type is declared in Winnt.h as follows:

    typedef CONST CHAR *LPCSTR;

    Czyli jak masz sciezke w tablicy char zakonczonej '\0' to podajesz po prostu wskaznik i rzutujesz na LPCTSTR - byc moze rzutowanie nie bedzie konieczne. To oczywiscie bedzie dzialac o ile nie kompilujesz z unikodem.

    pozdrowka

×
×
  • Utwórz nowe...