OCX Subclassed ListBox: Missing Messages
Peter C -- PCMurray@vitgbsd3.telecom.com.au
Monday, June 24, 1996
Environment: VC++ 4.1 / Win 95
My goal is to create an owner-draw listbox as a control.
I created an OLE Control project with AppWizard
(OLE ControlWizard) and chose to subclass a LISTBOX as
one of the generation options.
The problem I am encountering is that the WM_DRAWITEM
message never seems to be sent, and therefore OnDrawItem
is not called (as it is in a standard dialog based
subclassed LISTBOX). I tried making the style
LBS_OWNERDRAWFIXED but to no avail. I thought this may
be a reflected message (OCM_DRAWITEM) but this message is
not received either.
The only draw-related function that is ever called in the
control seems to be;
OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
Have I missed something fundamental here, and/or do I have
to somehow generate my own WM_DRAWITEM messages from the
OnPaint function?
Thanks,
- Peter Murray, Telstra (Telecom Australia)
Chong Zhang -- cz@dana.ucc.nau.edu
Tuesday, June 25, 1996
As I understood, the WM_DRAWITEM etc. messages are sent to the parent
window of the list box.
On Mon, 24 Jun 1996, Murray, Peter C wrote:
>
> Environment: VC++ 4.1 / Win 95
>
>
> My goal is to create an owner-draw listbox as a control.
> I created an OLE Control project with AppWizard
> (OLE ControlWizard) and chose to subclass a LISTBOX as
> one of the generation options.
>
> The problem I am encountering is that the WM_DRAWITEM
> message never seems to be sent, and therefore OnDrawItem
> is not called (as it is in a standard dialog based
> subclassed LISTBOX). I tried making the style
> LBS_OWNERDRAWFIXED but to no avail. I thought this may
> be a reflected message (OCM_DRAWITEM) but this message is
> not received either.
>
> The only draw-related function that is ever called in the
> control seems to be;
>
> OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
>
> Have I missed something fundamental here, and/or do I have
> to somehow generate my own WM_DRAWITEM messages from the
> OnPaint function?
>
> Thanks,
> - Peter Murray, Telstra (Telecom Australia)
>
>
Murray Spenser Cox -- murrayc@gui.com.au
Monday, July 01, 1996
The class of the list box has to be either LBS_OWNERDRAWFIXED or =
LBS_OWNERDRAWVARIABLE, and only then will the message OCM_DRAWITEM be =
sent from the parent window
----------
From: Chong Zhang[SMTP:cz@dana.ucc.nau.edu]
Sent: Tuesday, 25 June 1996 6:23 PM
To: mfc-l@netcom.com
Subject: Re: OCX Subclassed ListBox: Missing Messages
As I understood, the WM_DRAWITEM etc. messages are sent to the parent
window of the list box.
On Mon, 24 Jun 1996, Murray, Peter C wrote:
>=20
> Environment: VC++ 4.1 / Win 95
>=20
>=20
> My goal is to create an owner-draw listbox as a control.
> I created an OLE Control project with AppWizard
> (OLE ControlWizard) and chose to subclass a LISTBOX as
> one of the generation options.
>=20
> The problem I am encountering is that the WM_DRAWITEM
> message never seems to be sent, and therefore OnDrawItem
> is not called (as it is in a standard dialog based
> subclassed LISTBOX). I tried making the style
> LBS_OWNERDRAWFIXED but to no avail. I thought this may
> be a reflected message (OCM_DRAWITEM) but this message is
> not received either.
>=20
> The only draw-related function that is ever called in the
> control seems to be;
>=20
> OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
>=20
> Have I missed something fundamental here, and/or do I have
> to somehow generate my own WM_DRAWITEM messages from the
> OnPaint function?
>=20
> Thanks,
> - Peter Murray, Telstra (Telecom Australia)
>=20
>=20
| Вернуться в корень Архива
|