[VC++] tekstkleur in listbox

Pagina: 1
Acties:

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 26-08 18:43

hufkes

nee, daar staat niet hufter!

Topicstarter
Is het mogelijk om in een listbox de kleur van het lettertype aan te passen, of moet je dan een volledig nieuwe listboxklasse gaan maken? Heb gekeken in de msdn, maar ik zag daar eigelijk helemaal geen instellingen voor de tekst.

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • The End
  • Registratie: Maart 2000
  • Laatst online: 21:34

The End

!Beginning

Je kan ook een CListCtrl gebruiken... Kan hetzelfde als een listbox en meer :)
CListCtrl::SetTextColor

Verwijderd

En als je dan toch een gewone listbox wil gebruiken kan je volgens mijn MSDN de WM_CTLCOLORLISTBOX afhandelen.


WM_CTLCOLORLISTBOX
The WM_CTLCOLORLISTBOX message is sent to the parent window of a list box before the system draws the list box. By responding to this message, the parent window can set the text and background colors of the list box by using the specified display device context handle.

A window receives this message through its WindowProc function.
code:
1
2
3
4
5
6
LRESULT CALLBACK WindowProc(
  HWND hwnd,     // handle to window
  UINT uMsg,     // WM_CTLCOLORLISTBOX
  WPARAM wParam,   // handle to DC (HDC)
  LPARAM lParam    // handle to list box (HWND)
);

Parameters
wParam
Handle to the device context for the list box.
lParam
Handle to the list box.
Return Values
If an application processes this message, it must return a handle to a brush. The system uses the brush to paint the background of the list box.

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 26-08 18:43

hufkes

nee, daar staat niet hufter!

Topicstarter
thanks, gaan we eens even mee prutsen.

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 26-08 18:43

hufkes

nee, daar staat niet hufter!

Topicstarter
mmm, ik heb wat lopen prutsen, maar ik kom er niet uit. Ik heb in de msdn een voorbeeldje gevonden dat de WM_CTLCOLORLISTBOX probeert af te vangen in een MainWndProc.
Ik heb zelf een MFC dialog based applicatie gebouwd en volgens mij geen MainWndProc. Correct me if i'm wrong, ben een absolute nul met die WindowsAPI's en het afvangen daarvan.

Ik wil dus een tekstvlak hebben waar naartoe ik vanuit het gehele programma statusinformatie kan schrijven; gewone berichten zwart en de errormessages in het rood. Gebruik nu een CListBox en de bijbehorende m_ListInfo.AddString() en dat werkt goed, maar niet in kleur.

Wie kan me vertellen waar ik die tekstkleur precies in kan stellen?

Oh en met die CListCtrl kreeg ik niets op het scherm te zien... Moest al de addstrings veranderen in insertItem en dat ging ook niet geheel zoals ik het had gehoopt :'(

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • The End
  • Registratie: Maart 2000
  • Laatst online: 21:34

The End

!Beginning

Op donderdag 06 juni 2002 16:50 schreef hufkes het volgende:

[knip]

Oh en met die CListCtrl kreeg ik niets op het scherm te zien... Moest al de addstrings veranderen in insertItem en dat ging ook niet geheel zoals ik het had gehoopt :'(
Je moet de CListCtrl op 'report' zetten (aanvinken bij de properties van de resource). Dan werkt hij wel als een listbox en kan ook nog veel meer.

Verwijderd

Hmm... maar WM_CTLCOLORLISTBOX laat je alleen de kleur van alle items in 1x instellen geloof ik. Dat is niet wat je wilt blijkt nu...
Als je 't managen van events enzo toch door een listbox wil laten doen, maar het tekenen van de inhoud zelf wilt doen kan je 'm ownerdraw maken... Is wel even wat werk, maar je hebt dan wel 100% controle over wat er gebeurt...

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 26-08 18:43

hufkes

nee, daar staat niet hufter!

Topicstarter
Tja, zoals ik al zei, ik ben nogal noob op dit gebied. Wil gewoon een heel simpele manier om een errorbericht op te laten vallen in een lijstje met statusvermeldingen. Had eigenlijk verwacht dat er wel zoiets "eenvoudigs" als andere tekstkleur mogeljk was.

Ik zal de Pretzold er eens even bijpakken vandaag, wellicht dat daar een voorbeeldje in staat, of anders hier iemand die het weet en er voor een noob duidelijk voorbeeld kan geven? Ik snap wel wat je bedoeld met ownerdraw kiezen en dan alles zelf doen, maar ik zou absoluut niet weten hoe ik dat dan kan doen :'(

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


Verwijderd

Mjah... de common controls bevatten echt 1001 nutteloze functies, maar heel eenvoudige dingen lukken er vaak niet eens mee. Als je met spy++ kijkt naar de controls die door een boel microsoft programma's gebruikt worden zie je dat bijna alles owner draw is of dat 't controls zijn die je als normale sterveling niet hebt...

Eventueel kun je op http://www.codeguru.com ofzo kijken of er al iemand een owner draw versie heeft gemaakt die doet wat jij wilt. Je gebruikt MFC begreep ik uit je verhaal, dus dan zit je bij codeguru goed...

edit:

http://www.codeguru.com/listbox/colorlb.shtml komt waarschijnlijk een heel eind in de buurt...

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 26-08 18:43

hufkes

nee, daar staat niet hufter!

Topicstarter
WOOT! Precies wat ik zocht, very nice.

Ook voor hen die later nog zoeken, die CColorListBox is harstikke mooi!

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P

Pagina: 1