Randal
-
Postów
0 -
Dołączył
-
Ostatnio
Nigdy
Typ zawartości
Profile
Fora
Kalendarz
Articles
Pliki
Posty napisane przez Randal
-
-
Chcialbym "rozciagnac" moje listview w pionie, nie zmieniajac ilosci wierszy.
Czy ktos wie jak mozna zwiekszyc wysokosc wierszy w listview?
Moze chociaz jakis pomysl? -
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?
-
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 -
Czy takie funkcje jak ImageList_GetIcon powoduja alokacje pamieci?
-
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.
-
-
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.
-
Ok, jesli sie nie da w locie fontami zonglowac, to chcialbym zrobic tak:
1. Odczytac wszystkie parametry istniejacego fonta.
2. Zmienic kilka paramsow.
3. Zniszczyc istniejacy font.
4. Utworzyc nowy font.Mam problemy z pkt 1 i 2. W ogole fonty to moja pieta achillesowa :(
-
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 ActiveControlNo 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 -
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 -
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)
-
no wlasnie a dlaczego wsprintf oto jest pytanie??
osobiscie wole sprintf, jest lepszy bo sux wsprintf nie ciagnie floatow i paru innycha 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 ;)
-
Heh, dzieki wam, sporo wskazowek , piasiu jestes boski.
Przyznam ze po pierwszym dniu zwatpilem a tu prosze :)
muszte te kopalnie posprawdzac -
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
-
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.. ? -
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?
ListView - wysokosc wiersza
w C
Napisano
Ok, znalazlem rozwiazanie, wysokosc wierszy mozna regulowac rozmiarami ikon w imagelist dla listview.