15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Listbox crashes in Win95

Robert Tenback -- Robert.Tenback@let.ruu.nl
Monday, December 09, 1996

Environment: Win95, VC++4.2b

Problem:
I am using a Listbox with the styles LB_OWNERDRAWVARIABLE 
and LB_HASSTRINGS. I derive this from the standard MFC CListBox, 
and I handle the WM_MEASUREITEM message myself.

The LPMEASUREITEM pointer points to a MEASUREITEMSTRUCT 
that contains an itemData pointer. This pointer should point to a string. 
In Windows NT, this works fine. In Windows 95, it crashes because this 
pointer points to bogus data.

Question:
* Is this a VC4.2 bug, or a Win95 bug?
* Is there a fix/patch/workaround?

Regards,
Robert Tenback
                            ____  ___  ___  ___  ___ _____
drs. Robert Tenback        /   / /  / /  / /    /  /  /   
Utrecht University        /---/ /  / /--/ /--  /--/  /    
Faculty of Arts          /  \  /__/ /__/ /___ / \   /     
Dept. Computers and Humanities  Robert.Tenback@let.ruu.nl 



Eric clinidata -- nm94318@clinidata.com
Thursday, December 12, 1996

[Mini-digest: 2 responses]



Hello Robert,

I've go the same problem before, what's happening is that the   
WM_MEASUREITEM is sent to you when you do your AddString (right after it)   
and before you SetItemDataPtr (I guess you're calling this function).   
 The fact that it doesn't crash in NT is probably just luck.

Hope it helps you.

P.S. Thank you David for coming back as the right one to manage the list,   
I was very close to quit it!


Eric Lamontagne
Clinidata Inc.
elamontagne@Clinidata.com  
-----From: joew@statsoft.com (Joe Willcoxson)

>Environment: Win95, VC++4.2b
>
>Problem:
>I am using a Listbox with the styles LB_OWNERDRAWVARIABLE 
>and LB_HASSTRINGS. I derive this from the standard MFC CListBox, 
>and I handle the WM_MEASUREITEM message myself.
>
>The LPMEASUREITEM pointer points to a MEASUREITEMSTRUCT 
>that contains an itemData pointer. This pointer should point to a string. 
>In Windows NT, this works fine. In Windows 95, it crashes because this 
>pointer points to bogus data.
>
>Question:
>* Is this a VC4.2 bug, or a Win95 bug?
>* Is there a fix/patch/workaround?

This really isn't an MFC question is it?  My documentation says that
itemData should be NULL for a LISTBOX that has the LB_OWNERDRAWVARIABLE and
LB_HASSTRINGS style.  It would be a LPCTSTR if it DID NOT have the
LB_HASSTRINGS style.  If you want to get the string, use the itemID member
and call GetText().  You just got lucky or detected a bug in NT.  This is a
really lame question for a supposedly intermediate/advanced MFC list.  David
is waaaaaaaayyyy too kind.
--
Gloria in excelsius Deo
Joe Willcoxson (joew@statsoft.com), Senior Software Engineer
Visit us: http://www.statsoft.com, Visit me: http://users.aol.com/chinajoe
#define STD_DISCLAIMER "I speak only for myself"
__cplusplus spoken here;






| Вернуться в корень Архива |