Ownerdraw Listbox Problem
Rajat Singhal -- rajat@corus.com
Monday, September 30, 1996
Environment: MSVC 4.1 under Win95/WinNT
Hi Guys,
We have a problem out here. We have an owner drawn listbox. And we cant
seem to get the measure item message. hence there is no control over the
height of the items that are added to the listbox. The code seems to be
right.
Has anybody encountered this problem before? Or is there some other way
to control the height of the listbox items?
TIA
-Rajat
Paul D. Bartholomew -- PaulDB@datastorm.com
Tuesday, October 01, 1996
[Mini-digest: 5 responses]
Environment: MSVC 4.1 under Win95/WinNT
Rajat wrote:
>>We have a problem out here. We have an owner drawn listbox. And we cant
seem to get the measure item message. hence there is no control over the
height of the items that are added to the listbox. The code seems to be
right.<<
If you set the style to Owner Draw--Fixed, MeasureItem doesn't get
called. For that case, you'll need to explicitly call the SetItemHeight
function for the listbox. Calling SetItemHeight with an index of zero
(assuming that Owner Draw is set to Fixed) will set the height of all of
the listbox items.
If you set the style to Owner Draw--Variable, MeasureItem should get
called for each item in the listbox.
Paul Bartholomew
pauldb@datastorm.com
-----From: "Dorie Hannan"
Check the style of your listbox. The OwnerDrawn style needs to be
variable, not fixed in order for you to receive the measure item
message for each item.
Hope this helps,
Dorie Hannan.
-----From: Raja Segar
U probably did not specify the style of the ownerdraw list box as Variable.
If you had specified Fixed then u will only get MeasureItem message once.
U can fix this in the resource editor or specify the style in the create
function.
Bye
( _ \/ __)(_ )
) /\__ \ / /_
(_)\_)(___/(____)@pc.jaring.my
-----From: kitk@mudshark.sunquest.com (Kit Kauffmann)
Try SetItemHeight (LB_SETITEMHEIGHT) - the measure-item message is for
variable-height listboxes...
If you tied buttered toast to the back of a cat and dropped it from a
height, what would happen?
-----From: bliu@campbellsoft.com
You need to set owner draw variable style.
Bill
MHENRY.UMI.COM -- MHENRY@umi.com
Thursday, October 03, 1996
[Mini-digest: 3 responses]
Well you don't give much information about what you tried or how you know
it's not working.
It's pretty simple to do.
Have the class wizard generate an override for MeasureItem.
void CColorListBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
// all items are of fixed size
// must use LBS_OWNERDRAWVARIABLE for this to work
lpMeasureItemStruct->itemHeight = 20;
}
Voila.
--matt
/~~~~~~~~~~~~~~~~~~~~~~~~~~~
Matthew Henry -- UMI
mhenry@umi.com (Work)
mhenry1384@aol.com (Home)
~~~~~~~~~~~~~~~~~~~~~~~~~~/
--Boundary-351816-0-0
Content-Type: message/rfc822
Date: 02 Oct 96 18:54:37
From:"Rajat Singhal "
To: MFC,Mailing,List,mfc-l@netcom.com
Subject: Ownerdraw Listbox Problem
Reply-to: mfc-l@netcom.com
X-Orcl-Application: MIME-Version: 1.0
X-Orcl-Application: Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Orcl-Application: Sender: owner-mfc-l@majordomo.netcom.com
X-Orcl-Application: Errors-To: owner-mfc-l@majordomo.netcom.com
X-Orcl-Application: Precedence: bulk
Environment: MSVC 4.1 under Win95/WinNT
Hi Guys,
We have a problem out here. We have an owner drawn listbox. And we cant
seem to get the measure item message. hence there is no control over the
height of the items that are added to the listbox. The code seems to be
right.
Has anybody encountered this problem before? Or is there some other way
to control the height of the listbox items?
TIA
-Rajat
-----From: Gabriel Parlea-Visalon
The quick answer is that there isn't anything wrong with owner-drawn controls
and the corresponding MFC classes.
In the absence of your code here are some possible explanations.
You haven't set your listbox to be owner-draw variable, the control is not
correctly subclassed to the dialog, you have derived from CListBox as you do,
and have overriden OnChildNotify() without calling the base class
OnChildNotify(), you don't use a CListBox derived class subclassed to the parent
dialog and expect the message to go to the parent, you don't override the
CListBox MeasureItem() in which case you haven't subclassed correctly because
the default MeasureItem() for owner-drawn listboxes asserts FALSE and finally,
you are using DDE.
It is always easier to get a correct answer to one's question if one provides
the necessary code.
I hope this helps you.
Gabriel
--
Gabriel Parlea-Visalon
Software Engineer
Derivative Trading Systems Ltd
gabriel@derivs.demon.co.uk
-----From: Gerry Sweeney
Rajat,
I believe that what Paul told you below is wrong. As far as I know, the
documentation says, and my implementations of owner drawn list boxes tells
me that the MesaureItem message gets called ONCE when the list box is first
created when the style of the listbox is owner drawn fixed. For owner drawn
variable Paul is absolutely correct in saying that it gets called for each
item before the item is drawn.
I hope this helps
Gerry Sweeney
| Вернуться в корень Архива
|