Gå til innhold

CListCtlr/View med CustomDraw


Anbefalte innlegg

Skrevet

Driver og fikser på et relativt stort program skrevet i Visual C++ og har litt problemer.

 

Viser en del data i en klasse derivert fra CListView og lagrer dataene i en CListCtrl. Pga. datamengden har jeg laget en egen klasse for å lagre informasjonen og henter den vha. TextCallback. Det skal være litt farger på teksten og bruker Customdraw til det.

 

Og så kommer vi til sakens kjerne. En metode er på forhånd definert i ListView klassen, men ifølge MSDN er dette en metode som tilhører ListCtrl. Programmet har virket med dette oppsettet så det skulle ikke være noe i veien med å beholdet. Hadde det vært bedre å flytte metoden -- minst like bra?

 

Det andre spørsmålet er om det er nødvendig i det hele tatt å ha denne metoden. Tydligvis siden standardmetoden kun har en linje med kode: ASSERT(FALSE);

Er det noen alternativer? Noen som har vært borti lignende før?

Videoannonse
Annonse
Skrevet

Hvis metoden ikke gjøre noe annet en assert er det vel ikke noe vits i å fjerne den? though assertions er litt irriternde innimellom...bare litt...det er som en feilmelding som ikke sier noe annet en at det er en feil.

Skrevet

Det er snakk om å fjerne 'override'en, ikke standardmetoden som inneholder assert. Det er sannsynligvis noe annet som er i uorden også.

 

Prøvde å skrive return; som første linje i Override-metoden og da klikket det ihvertfall ikke. Men det var ikke så mye tekst som kom opp heller.

Skrevet

Har hatt noe av de samme problemene med MFC jeg også,

jeg mener det hadde noe med hvordan du lager vinduet ditt, vinduer som ikke vises modalt må deklareres globalt i prosjektet (CWinApp eller noe), ellers får du masse assertions og sånn

  • 2 uker senere...
Skrevet

Til info: CListView objektet som noen andre hadde kodet hadde satt en flag til OWNER_DRAW. Ved å ta bort denne vil ikke DrawItem metoden bli kalt opp. Problem løst.

 

Nytt problem:

 

Har en kommando som forandrer farger i bakgrunnen på listen i 'report view' utifra visse kriterier. Når man bruker denne vil ikke fargeleggingen bli synlig med mindre man tar muspilen over linjen (dårlig løsning) eller bruker CListCtrl.Update(linje). Nå er det veldig mange linjer i disse kontrollene, så hvis noen vet om en måte å teste om linjen er synlig.

 

Har funnet en metode som heter IsVisible(), men den er ikke for CListCtrl. Fungerer den allikevel?

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...