Changing Listbox style programatically
Adrian_Glanvill@stercomm.com
Tuesday, April 16, 1996
Environment: VC++ 4.1, Windows NT 3.51 Service Pack 4
I have several classes derived from CFormView, each using the same
dialog template. This template contains a listbox which has the
LBS_EXTENDEDSEL style, which is correct for all but one of the derived
classes. The listbox window is mapped using DDX to a CListBox member.
In one of my CFormView derived classes, I need to implement only a
single-selection list, so I used the CWnd::ModifyStyle function to
remove the LBS_EXTENDEDSEL style. I placed this call inside my view's
OnInitialUpdate function, after the base class OnInitialUpdate had
been called.
Unfortunately, the listbox still behaved as though it had the
LBS_EXTENDEDSEL style. I traced through the MFC code and verifed that
SetWindowLong was being called with the amended style, and I used
Spy++ to verify that the listbox did receive the WM_STYLECHANGING and
WM_STYLECHANGED messages.
My question is, how can I change the listbox style programatically
using MFC ?
Thanks,
Adrian Glanvill
Sterling Commerce, Inc.
Don.Irvine@net-tel.co.uk
Thursday, April 18, 1996
[Mini-digest: 2 responses]
Adrian,
> My question is, how can I change the listbox style programatically
> using MFC ?
If you can't change the this listbox style dynamically (which it appears
you can't), then you could try one of the following:
1) Use two dialog resources.
2) Have two listboxes, one with LBS_EXTENDEDSEL, one without. Show/Hide
the relevant listboxes at runtime.
3) Dynamically create the listbox (with the required style) at runtime.
Note that you will need to be beware of dialog base units and window
Z ordering.
Have fun,
Don
-----From: "Mike Blaszczak"
From: owner-mfc-l@netcom.com on behalf of Adrian_Glanvill@stercomm.com
Sent: Tuesday, April 16, 1996 09:49
> Environment: VC++ 4.1, Windows NT 3.51 Service Pack 4
Thanks.
> and I used
> Spy++ to verify that the listbox did receive the WM_STYLECHANGING and
> WM_STYLECHANGED messages.
Thanks!
To my knowledge, none of the standard Windows controls react to
WM_STYLECHANGING and WM_STYLECHANGED. You have to manually destroy the window
and recreate it with the different style bits you would like to use.
.B ekiM
TCHAR szSpringtime[] = _T("Check twice, save a life: motorcycles are
everywhere!");
| Вернуться в корень Архива
|