Randal Napisano Luty 14, 2019 Autor Zgłoś Udostępnij Napisano Luty 14, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Luty 18, 2019 Zgłoś Udostępnij Napisano Luty 18, 2019 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. Ad2. sesja:"ftp://winapi.org" //zmienione przez pinolca Ad3. Moze styl WS_EX_MODALFRAME(sorki jak cos w stylu przekrecilem) powinien Ci pomoc, daje kontrolce dwie dodatkowe ramki. 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 ) Ad6. ofn.lStructSize = sizeof (OPENFILENAME) ; ofn.hwndOwner = hwnd ; ofn.hInstance = NULL ; ofn.lpstrFilter = szFilter ; ofn.lpstrCustomFilter = NULL ; ofn.nMaxCustFilter = 0 ; ofn.nFilterIndex = 0 ; ofn.lpstrFile = "NazwaPliku"; ofn.nMaxFile = MAX_PATH ; ofn.lpstrFileTitle = NULL ; ofn.nMaxFileTitle = MAX_PATH ; ofn.lpstrInitialDir = NULL ; ofn.lpstrTitle = "jakiś tytuł"; ofn.Flags = OFN_OVERWRITEPROMPT; ofn.nFileOffset = 0 ; ofn.nFileExtension = 0 ; ofn.lpstrDefExt = TEXT ("bmp") ; ofn.lCustData = 0 ; ofn.lpfnHook = NULL ; ofn.lpTemplateName = NULL ; GetSaveFileName (&ofn); Tak dziadek Petzold tego używa. Nie sprawdzalem tego twojego, ale to napewno działa. Ad6. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Luty 20, 2019 Zgłoś Udostępnij Napisano Luty 20, 2019 ad 5. Nie wiem w czym problem. Robisz CreateWindow i po bólu ;) Najpierw rejestruejsz klase okna a potem robisz raz dla okna głównegoa potem 3 razy CreateWindow z parametrem uchwytu do okna głównego. Jedyny problem jest tylko taki ze okno główne zawsze jest pod tymi nowymi 3 okienkami. Wiec aby rozwiazac ten problem to lepiej okno glowne pozostawic ukryte a utworzyc 4 okna z uchwytem okna glownego jako rodzica i dodac do tych okien styl WS_VISIBLE. Dzieki temu okno glowne nie bedzie widoczne a tylko beda widoczne te 4 "dzieci" okna glownego ktore beda posiadac te same prawa ;) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Omega Napisano Luty 20, 2019 Zgłoś Udostępnij Napisano Luty 20, 2019 Aby kontrolka np. edit byla wypukla wystarczy ja utworzyc w CreateWindowEx z pierwszym parametrem WS_EX_CLIENTEDGE. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Randal Napisano Luty 23, 2019 Autor Zgłoś Udostępnij Napisano Luty 23, 2019 Heh, dzieki wam, sporo wskazowek , piasiu jestes boski. Przyznam ze po pierwszym dniu zwatpilem a tu prosze :) muszte te kopalnie posprawdzac Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Randal Napisano Marzec 23, 2019 Autor Zgłoś Udostępnij Napisano Marzec 23, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Marzec 24, 2019 Zgłoś Udostępnij Napisano Marzec 24, 2019 Oto moja procedura ustawiajaca styl, tu chyba jest jakis bug : Kod: // ustawia podany styl okna void UstawStyl (HWND hwnd, DWORD styl) { long stary = GetWindowLong(hwnd, GWL_STYLE); SetWindowLong (hwnd, GWL_STYLE, stary | styl); } Myślę że twoim błędem jest to że po wywołaniu funkcji SetWindowLong nie wywołujesz SetWindowPos: Certain window data is cached, so changes you make using SetWindowLong will not take effect until you call the SetWindowPos function. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Marzec 24, 2019 Zgłoś Udostępnij Napisano Marzec 24, 2019 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 :D Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Randal Napisano Marzec 24, 2019 Autor Zgłoś Udostępnij Napisano Marzec 24, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Marzec 25, 2019 Zgłoś Udostępnij Napisano Marzec 25, 2019 Bardzo prosto. Utworzyłem okno WS_CHILD, które było dzieckiem dla okna głównego i sam odrysowuje w tym okienku ta tabele i obsluguje komunikaty. Ogólnie mówiac dużo roboty jeśli chchesz aby dało się jeszcze edytowac te pola ;) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.