Skocz do zawartości

Randal

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Posty napisane przez Randal

  1. Wielkie dzieki, kurcze takie kwiatki mnie najbardziej zalamuja, bo niby funkcja typu pobierz handle a tu wali rowno po zasobach systemu.
    Bill oszalal.
    Nazwa wskazuje wez uchwyt, a w praktyce - zamiast wciac uchwyt do utworzonego obiektu tworzy nowy obiekt i zwraca do niego uchwyt.
    Kurna to powinno byc create w nazwie :/

    Wiecej jest takich funckcji w systemie?

  2. A ja swego czasu napisalem taka procedurke:

    // zwraca liczbe dni pomiedzy dwoma datami
    int RoznicaDat(DATA_CZAS *in2, DATA_CZAS *in1)
    {
      DATA_CZAS temp;
      int sum1, sum2;
      int a, b;
      
      // in1 musi byc wczesniej niz in2
      if(in1->rok > in2->rok) return -1;
      if(in1->rok == in2->rok)
      {
        if(in1->miesiac > in2->miesiac) return -1;
        if(in1->miesiac == in2->miesiac)
          if(in1->dzien > in2->dzien) return -1;
      }
          
      memcpy(&temp, in1, sizeof(DATA_CZAS));
      // oblicz sume dni in1
      sum1 = in1->dzien;
      for(a = 0; a < in1->miesiac - 1; a++)
        sum1 += ((!(in1->rok % 4)) && (a == 1)) ? 29 : maxdni[a];
      for(a = 0; a < in1->rok; a++) 
        sum1 += (a % 4) ? 365 : 366;
      
      // oblicz sume dni in2    
      sum2 = in2->dzien;
      for(a = 0; a < in2->miesiac - 1; a++)
        sum2 += ((!(in2->rok % 4)) && (a == 1)) ? 29 : maxdni[a];
      for(a = 0; a < in2->rok; a++) 
        sum2 += (a % 4) ? 365 : 366;
      
      return sum2 - sum1;
    }

    maxdni to tablica 12-elementowa int z iloscia dni poszczegolnych miesiecy (luty = 28 )
    Niby dziala

  3. To chyba jednak nienajlepsze rozwiazanie.

    Kazdy, nawet pojedynczy, i nawet najglupszy watek w stylu

    while(true);

    powoduje w systemie Win XP prawie 100% obciazenia systemu.
    Czemu tak jest???

    Bo WM_TIMER dziala w tle lagodnie i bez hardcore, z tego wzgledu jest baaaardziej elegancki.

  4. andrp wielkie dzieki, prostota i geniusz rozwiazania powala - 2 linijki!

    PS. tylko nie wiem po co ta funkcja max(), bez tego dziala bez problemu

  5. Najlepiej do tego wykorzystac osobny watek.

    Zakladasz taki watek dla obslugi zmiany tekstu w oknie (lub wielu oknach).
    Faszerujesz go GetTickCount-ami czy RDTSC-ami i wysterowujesz kontrolki bez zadnego bawienia sie w minimialne timery, blokowanie petli komunikatow, czy inne niepozadane zjawiska.

    Minus taki ze troche sie trzeba napisac, ale plus ze mozna niezle zbajerowac program wysterowujac wiele okien na rozne sposoby.

  6. Nicon napisał:
    Myślę że twoim błędem jest to że po wywołaniu funkcji SetWindowLong nie wywołujesz SetWindowPos

    Jesli to bylaby prawda - wtedy zmiany w ogole nie odnioslyby skutku, tymczasem okna po dziabnieciu ta procedurka sa nieaktywne (disabled), wiec to chyba nie to, acz nie wiedzialem o tym SetWindowPos, fakt.

    Chociaz SetWindowPos mam na biezaco w obsludze WM_SIZE, zmiana rozmiaru okna (myszka) nie robi roznicy (fakt ze nie nastepuje to bezposrednio po wywolaniu SWP tylko jakis milard taktow CPU dalej).

    Piasiu napisał:
    1) Juz wiem co chcesz zrobic. Tobie chodiz o cos takiego jak w Exelu tabele. Ja tez tego potrzebowałem i sam sobie zrobiłem takie coś Ale chyba istnieje taka kontrolka w zbiorze ActiveControl

    No to pochwal sie co łaska jak zes tego dokonal, mam nadzieje ze nie przez reczne subklasowanie bo sie pochlastam...

    Edit by Piasiu
    Uzywajcie guzika QUOTE gdy kogoś cytujecie

  7. Ad4. Najlepiej jesli uzyjesz subclassingu i tam zablokujesz wszelkie wpisywanie albo ale nie jestem tego pewien mozesz sprobowac przchwycic komunikat WM_CTLCOLOREDIT(jeszcze raz sorki za przekrecenie nazwy komunikatu ale nie mam MSDNA przy sobie teraz )

    To byloby bez sensu dla kazdej kontrolki tworzyc procedury subclassingu :(

    Na szczescie poradzilem sobie z tym szczesliwe.
    Nie wiem dlaczego ale jesli podczas tworzenia (CreateWindow) "Edit" i ustawienia (miedzy innymi) WS_DISABLED - tlo jest szare, napis tez, okno nieaktywne.

    Ale gdy juz po utworzeniu okna ustawie styl WS_DISABLED to tlo jest biale, i napis czarny, i jednoczenie nieaktywne.
    Czyli to co chcialem w sumie.

    Oto moja procedura ustawiajaca styl, tu chyba jest jakis bug :? :

    // ustawia podany styl okna
    void UstawStyl (HWND hwnd, DWORD styl)
    {
      long stary = GetWindowLong(hwnd, GWL_STYLE);
      SetWindowLong (hwnd, GWL_STYLE, stary | styl);
    }
    Ad1 za bardzo nie wiem o co CI chodzi ale podejrzewam ze chcesz zmienic zeby byl sort header. Musisz usunac styl LVS_NOSORTHEADER. Jesli nie o to Ci chodzi to napisz dokladniej.

    LVS_NOSORTHEADER wylacza tylko buttony column-headera (nieaktywne).
    Chodzilo mi o row-header : czyli na poczatku kazdej poziomej linii listview jest taki button. Wciaz nie wiem jak sie do tego dobrac.
    Dla lepszego obrazu digital : (0 = puste , 1 = button)

    1|1|1|1  // header ListView
    1|0|0|0  // wiersz 1
    1|0|0|0  // wiersz 2
    1|0|0|0  // wiersz 3

    Edit by Piasiu
    Uzywajcie guzika QUOTE gdy kogoś cytujecie

  8. Jest jakis sposob aby zamiast tworzenia wielu roznych fontow edytowac tylko parametry juz utworzonego fontu czy piora ?
    Czesto mam fonty i piora w zmiennych static, poza tym przeciez to marnotrawstwo bezcennej pamieci.

    PS. Czy jest moze funkcja systemowa win32 ktora robi zrzut grafiki (screenshot-regionshoot) z np GDI-regionu do pliku *.bmp ? (lub zbior funkcji pomocnych wykonania do takiej operacji)

  9. no wlasnie a dlaczego wsprintf oto jest pytanie??
    osobiscie wole sprintf, jest lepszy bo sux wsprintf nie ciagnie floatow i paru innych

    a kiedys robilem to strcpy i itoa i strcat itp :D to byly czasy o ja glupi byl ze hej

    w obiektowce jest ten bol ze ona oglupia takich jak Luzio, tam na kazdym kroku jest przeciazanie operatorow a pozniej padaja glupie pytania jakby C++ byl jakims klonem paszczaka gdzie lancuchy dodaje sie i chyba nawet odejmuje ;)

  10. 1. Jak w listview zrobic cos podobnego do NOBUTTONLIKEHEADER , tylko ze dla "row-header"? Chodzi o to by pierwsza w rzedzie pozycja wygladala jak button z textem a nie jak napis na bialym tle.

    2. Jaki jest adres servera ftp winapi.org bo zgubilem? (ach te api-example)

    3. Ktory to styl wypukly dla np EDIT czy LISTVIEW? Znam tylko plaskie i wklesle i bardziej wklesle, ale wiem ze mozna robic wypukle... help

    4. Jak kontrolke "Edit" zmusic zeby byla do odczytu ale z bialym tlem?

    5. Czy da sie nie uzywajac okien MDI odpalic na raz 4 okna tak aby kazde mialo rowne prawa jesli chodzi o wyswietlanie i dzialanie ? (np jesli dan parent-hwnd okna rodzica to mi zblokuje rodzica, jesli dan NULL to i tak zblokuje rodzica do czasu az nie klikne na rodzicu...) help, kiedys widzialem ze mozna odpalic na raz jakby 2 te same programy z menu, dialogami itp, z tym ze faktycznie to 1 program

    6. Jak w winapi dobrac sie do okien openfile ? to musi byc w systemie.. cos jak DTP - cool zabawka do kalendarza

  11. Witam czesc i czolem.
    Razu pewnego naszlo mnie pisac cos takiego fikusnego jakie jest w edytorze DEV-CPP najnowszym, te spasione rebary z ikonami, editami, comboboxami i tym podobnymi wszelakimi ustrojostwami.

    No ale 3 dni wlosy z glowy rwalem, maglowalem MSDN aby gdzies tam maczkiem znalesc niepozorny text "rebar w uzyciu z toolbar" wymaga zdefiniowania stylu "pierdolka". No w koncu zaczelo dzialac, ale kaszana na max, wszystko sie kielbasi, ikony jakies nie ten tego ze style wypuklym sa ok ze stylem plaskim gdzies skrecaja w gore itp.
    Horror, jesli ktos mysli ze listview w winapi to masakra - tzn ze nie probowal laczyc rebara z toolshitem.
    No ale najgorsze to ze to co mnie dziala pod XP w win98se sie nie wyswietla, i mam nagie tlo tam gdzie powinny byc moje spasione rebary.

    Co to u licha moze byc ?

    Jest tam 1 szkopul :

    // Toolbar buttons to add.
    TBBUTTON tbButtonsAdd [ ] = 
    {
    {VIEW_LARGEICONS, IDM_LARGEICON, TBSTATE_ENABLED, TBSTYLE_BUTTON, 
    #if defined(_WIN32) | defined(_WIN64)
    {0},
    #endif
    0L, 0},
    {VIEW_SMALLICONS, IDM_SMALLICON, TBSTATE_ENABLED, TBSTYLE_BUTTON, 
    #if defined(_WIN32) | defined(_WIN64)
    {0},
    #endif
    0L, 0},
    {VIEW_LIST, IDM_LISTVIEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 
    #if defined(_WIN32) | defined(_WIN64)
    {0},
    #endif
    0L, 0},
    {VIEW_DETAILS, IDM_REPORTVIEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 
    #if defined(_WIN32) | defined(_WIN64)
    {0},
    #endif
    0L, 0},
    }; 
    

    Moze przez to win64- win32 ?
    Jak to definiowac.. ?

  12. Kazdy kto na slepia przejrzal e-mule wie ze rozmiar okna mozna zmieniac tylko do pewnego momentu, jest ograniczenie.
    Chcialbym sie porwac na taki bajer.
    Czy jest tu ktos na tyle obryty z winapi aby mnie naprowadzil kapke jak to takie cudo sie implementuje?

×
×
  • Utwórz nowe...