[WinAPI] Tryb wypełniania wielokątów

0

A wiec piszę procedurę własnej kontrolki. Mam w oknie tekst i chce zrobic zeby po kliknieciu go pojawil sie wokol niego niebieski prostokat a tekst zamienil sie na bialy, czy jest na to jakas specjalna metoda czy <ort>po prostu</ort> trzeba wszystko samemu opisac. Z tego co czytalem to chyba jest to powiazane z trybem wypełniania wielokątów ale czy isteniej taki, z gory dzieki za pomoc...

0

Nie porywasz się z motyką na słońce? ;)

  1. Jaką kontrolkę piszesz? Nikt nie jest tutaj jasnowidzem...
  2. Chodzi Ci o ramkę wokół kontrolki, czy wogól tekstu wewnątrz kontrolki, który może być częścią większej ilości tekstu (coś jak zaznaczenie)?? Czy jeszcze o coś innego???
  3. "Z trybem wypełniania wielokątów" ??? Ale o co chodzi? GDI?? OpenGL?? :)Prostokąt rysujesz przez FillRect() albo FrameRect() albo Rectangle() albo RoundRect(), ew. DrawFocusRect() oczywiście w WinAPI...
0

chodzi mi o zaznaczenie tekstu...
"porywam się z motyką na słońce" ? a czemu to niby, przeciez to nie jest wcale takie trudne, tym bardziej ze moja kontrolka jest bardzo prosta, tak wiec jak zaznaczyc tekst ?

0

chodzi mi o zaznaczenie tekstu...
"porywam się z motyką na słońce" ? a czemu to niby, przeciez to nie jest wcale takie trudne, tym bardziej ze moja kontrolka jest bardzo prosta, tak wiec jak zaznaczyc tekst ?

Taaa... ale co to za kontrolka? Subclassowany editbox??
Nie jest trudne..?
Czyli tak:

  1. Najpierw musisz uwzględniając aktualną pozycję tekstu w kontrolce, znaleźć położenie tekstu, który ktoś wybrał...Czyli obliczyć miejsce kliknięcia myszą, sprawdzić czy tam jest coś co może być zaznaczone, czy ktoś trafił w tekst w ogóle, itd.
  2. Następnie obliczyć wymiar zaznaczonego tekstu...
  3. Teraz musisz wiedzieć dokładnie w którym miejscu kontrolki jest rysowany zaznaczony tekst, chyba, że sam to robisz...
  4. Znając położenie i wymiar tekstu rysujesz w tym miejscu prostokąt(jaki chcesz), a następnie tekst, który tam ma być...
    Dużo rzeczy zależy od tego czy sm rysujesz, czy po prostu wykorzystujesz kontrolki systemowe... Rysując samemu masz większą kontrolę ale więcej też się namęczysz...
0

hehe ja to wszystko juz zrobilem, niemow mi jak obliczyc polozenie zaznaczenia tylko jak odwrocic kolory, znalazlem funkcje InvertRect ale ona tlo zamienia na czarne a tekst na bialy a ja chcialbym zeby zamienialo tlo na niebieski.

aha i mam jeszcze pytanie jak obliczyc srednia szerokosc znaku dla czcionki MS San Serif. Bo podobno wynosi ona 3/2 tm.tmAveCharWidth, ale cos to nie gra...

0

hehe ja to wszystko juz zrobilem, niemow mi jak obliczyc polozenie zaznaczenia tylko jak odwrocic kolory, znalazlem funkcje InvertRect ale ona tlo zamienia na czarne a tekst na bialy a ja chcialbym zeby zamienialo tlo na niebieski.

Taaa... Niestety nadal nie wiem co ty napisałeś za kontrolkę...
Pomyśl logicznie: skoro odwracasz kolor bialy to dostajesz czarny. Jak chcesz mieć niebieski to odwróć odwrócony niebieski ;-P
Po raz trzeci: narysuj prostokąt w tym miejscu o zadanych kolorach, z ramką czy bez. Jeżeli bez ramki to wystarczy narysować tekst o innym kolorze tła... Chyba, że sam nie rysujesz tekstu w swojej kontrolce? Ale niestety tak się nie dogadamy skoro tylko Ty wiesz co rysujesz i jak...

0

aha i mam jeszcze pytanie jak obliczyc srednia szerokosc znaku dla czcionki MS San Serif. Bo podobno wynosi ona 3/2 tm.tmAveCharWidth, ale cos to nie gra...

Skoro podobne tyle wynosi to pewnie tak jest.
Pytanie tylko do czego ją stosujesz? Do obliczenia szerokości wyrazu pewnie? :/

0

nom cuz dobra sam sobie jakos odwroce te kolory, myslalem ze moze jest do tego jakas funkcja a sredniej szerokosci znaku bo chce na koncu tekstu wyswietlic ikonke...

0

...bo wymiar tekstu liczy:
GetTextExtentPoint32()
The GetTextExtentPoint32 function computes the width and height of the specified string of text.

0

ok juz wszystko dziarga ale mam bardzo dziwny problem. Choci mi o ikonki XP (z kanalem alpha) wczesniej wrzucalem ikonki do zasobow i nie wazne jak wyswietlalem wszystko bylo dobrze. Teraz gdy probuje wyswietlic ikonke to tlo w niej jest czarne (bez kanalu alpha). Jedynie ikonka na pasku tytulu jest poprawnie wyswietlana... co zrobilem zle ze teraz wszystko sie kopsa ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1