Skocz do zawartości

API : kilka drobiazgow, help kto żyw please


Randal

Recommended Posts

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

Link do komentarza
Udostępnij na innych stronach

:o 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.

Link do komentarza
Udostępnij na innych stronach

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 ;)

Link do komentarza
Udostępnij na innych stronach

  • 1 month later...
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

Link do komentarza
Udostępnij na innych stronach

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.
Link do komentarza
Udostępnij na innych stronach

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

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...