Sletter ikke ordentligt i EDIT kontrol

Tags:    c++

Hej,

Når jeg skriver noget tekst i min EDIT kontrol og trykker på slet-knappen (altså "backspace"), så går markøren et tegn tilbage, men uden at slette det tegn, det står ved. Det er lidt svært at forklare, men det kan være I kan se en fejl i min kode:

Fold kodeboks ind/udKode 




8 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Det er denne linje der er ansvarlig:
SetBkMode (device_bk, TRANSPARENT);
Hvis du fjerner den virker det.

Problemet er ikke at den ikke får slettet tegnet, men at den ikke får opdateret skærmen rigtigt.



Okay, men jeg skal bruge den linie :( Hvad gør jeg?



Jeg udskiftede TRANSPARENT med OPAQUE og så virkede det. Hvorfor det?



OPAQUE er default, så det giver det samme som hvis man ikke gør noget.

Tilsyneladende går edit controllen ud fra at den kan slette tekst ved at overskrive med en anden tekst. Det kan den ikke hvis du sætter den til at bruge transparent.

Hvorfor skal du kalde SetBkMode?



Fordi min edit af en underlig grund får en grå baggrund ved tomme linier, og fordi jeg endnu er for noob'et til at sætte tekstfarven på kontrollen i en hvilken som helst message (blandt andet derfor, jeg bruger CTLCOLOREDIT - for at få den rigtige wParam) :)



Hov, jeg misforstod dit spørgsmål. Jeg troede du mente hvorfor jeg skulle bruge WM_CTLCOLOREDT. Nu har jeg slettet SetBkMode og det hele virker. Før voldte den bare problem med baggrunden, så jeg besluttede mig for manuelt at ændre den. Tak for hjælpen :)


Så har jeg faktisk lige et til spørgsmål (kom jeg i tanker om efter at have lukket tråden :-|). Hvordan får jeg en edit kontrol, der ligner den, der er brugt i Notesblok? I Delphi hedder det en TMemo, men ... Delphi, nej tak :X ;)). Jeg fandt den ikke under navne på kontroller i MSDN. Kan man lave en edit, der ser sådan ud? Altså med den der tynde 1px kant, og med både en top- og venstremargin.



Indlæg senest redigeret d. 05.03.2007 20:41 af Bruger #8985
Jeg tror at notesblok er en rich-edit.



Okay, men RichEdit markerer jo teksten anderledes end Notesblokken. RichEdit markerer altid et tegn længere end den pågældende linje, og den har ikke den der border.

Edit: Fandt ud af det med border'en, bare giv din EDIT en WS_EX_CLIENTEDGE.



Indlæg senest redigeret d. 09.03.2007 15:52 af Bruger #8985
t