Disabling Column Sizing in CListCtrl
Jeff Moss -- jeff.moss@gtri.gatech.edu Tuesday, September 24, 1996 Environment: VC 4.0, WinNT 3.51 I've tried trapping LVM_SETCOLUMNWIDTH, and the various LVN_* notifiers but it seems that the actual sizing is done somewhere beyond my control. The CListCtrl I use is my own derived class and is OWNERDRAW_FIXED. Has anyone done this successfully? MOSS, JEFFREY N --- Research Scientist ITL/CSITD Georgia Tech Research Institute Georgia Institute of Technology Atlanta Georgia, 30332 jeff.moss@gtri.gatech.edu (404) 894-5959 (voice) (404) 894-7080 (fax)
IK 23 -- Cunningham@tgd.swissptt.ch Thursday, September 26, 1996 [Mini-digest: 2 responses] you have to trap the listctrl onnotify message somthing like the code below BOOL CExtListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { UINT code = ((NMHDR*)lParam)->code; int nColumn; CRect rect; switch (code) { case HDN_ENDTRACKA: //Done this cause winnt always uses a unicode header ctrl. case HDN_ENDTRACKW: case HDN_BEGINTRACKA: case HDN_BEGINTRACKW: case HDN_TRACKA: case HDN_TRACKW: //do what you want here to handle these events break; default: break; } return CListCtrl::OnNotify(wParam, lParam, pResult); } Graham Cunningham 00 41 31 338 0633 >---------- >From: jeff.moss@gtri.gatech.edu[SMTP:jeff.moss@gtri.gatech.edu] >Sent: Dienstag, 24. September 1996 23:19 >To: mfc-l@netcom.com >Subject: Disabling Column Sizing in CListCtrl > >Environment: VC 4.0, WinNT 3.51 > >I've tried trapping LVM_SETCOLUMNWIDTH, and the various LVN_* notifiers >but >it seems that the actual sizing is done somewhere beyond my control. > >The CListCtrl I use is my own derived class and is OWNERDRAW_FIXED. > >Has anyone done this successfully? > >MOSS, JEFFREY N --- Research Scientist >ITL/CSITD >Georgia Tech Research Institute >Georgia Institute of Technology >Atlanta Georgia, 30332 > >jeff.moss@gtri.gatech.edu > >(404) 894-5959 (voice) >(404) 894-7080 (fax) > > -----From: Mario Contestabile BOOL YourListCtrl::OnNotify(...){ BOOL bret = TRUE; if ((NMHDR*)lParam)->code == HDN_BEGINTRACK) bret = FALSE; *pResult = 0; return bret; }
Asaf Kashi -- kashi@sr.hp.com Friday, October 18, 1996 I tried using your method and I can verify that I am intercepting the = HDN messages in the switch statement. I want to ignore these message = and not let the user resize, so I tried sending a TRUE and then later = FALSE(just to see if it changes anything) Neither one did what I = wanted. How can I just ignore the HDN_TRACK(begin/end/track) messages? All I want is to disable the header sizing in my listctrl. Thanks, Asaf --- Asaf Kashi kashi@ap.net kashi@sr.hp.com Software Development Engineer internal-hp: = http://styx.sr.hp.com/kashi Hewlett Packard - Santa Rosa Systems Division = http://www.ap.net/~kashi ---------- From: Cunningham Graham, IK 23 Sent: Wednesday, September 25, 1996 11:59 PM To: 'mfc-l' Subject: Re: Disabling Column Sizing in CListCtrl [Mini-digest: 2 responses] you have to trap the listctrl onnotify message somthing like the code below BOOL CExtListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)=20 { UINT code =3D ((NMHDR*)lParam)->code; int nColumn; CRect rect; switch (code) { case HDN_ENDTRACKA: //Done this cause winnt always uses a unicode header ctrl. case HDN_ENDTRACKW: case HDN_BEGINTRACKA: case HDN_BEGINTRACKW: case HDN_TRACKA: case HDN_TRACKW: //do what you want here to handle these events break; default: break; } =09 return CListCtrl::OnNotify(wParam, lParam, pResult); } Graham Cunningham 00 41 31 338 0633 >---------- >From: jeff.moss@gtri.gatech.edu[SMTP:jeff.moss@gtri.gatech.edu] >Sent: Dienstag, 24. September 1996 23:19 >To: mfc-l@netcom.com >Subject: Disabling Column Sizing in CListCtrl > >Environment: VC 4.0, WinNT 3.51 > >I've tried trapping LVM_SETCOLUMNWIDTH, and the various LVN_* notifiers >but >it seems that the actual sizing is done somewhere beyond my control. > >The CListCtrl I use is my own derived class and is OWNERDRAW_FIXED. > >Has anyone done this successfully? > >MOSS, JEFFREY N --- Research Scientist >ITL/CSITD=20 >Georgia Tech Research Institute >Georgia Institute of Technology >Atlanta Georgia, 30332 > >jeff.moss@gtri.gatech.edu > >(404) 894-5959 (voice) >(404) 894-7080 (fax) > > -----From: Mario Contestabile BOOL YourListCtrl::OnNotify(...){ BOOL bret =3D TRUE; if ((NMHDR*)lParam)->code =3D=3D HDN_BEGINTRACK) bret =3D FALSE; *pResult =3D 0; return bret; }
Si Cruse -- scruse@csfp.co.uk Tuesday, October 22, 1996 [Mini-digest: 3 responses] Asaf Kashi wrote: > > I tried using your method and I can verify that I am intercepting the = > HDN messages in the switch statement. I want to ignore these message = > and not let the user resize, so I tried sending a TRUE and then later = > FALSE(just to see if it changes anything) Neither one did what I = > wanted. How can I just ignore the HDN_TRACK(begin/end/track) messages? > All I want is to disable the header sizing in my listctrl. > > Thanks, > Asaf > --- > Asaf Kashi kashi@ap.net kashi@sr.hp.com > Software Development Engineer internal-hp: = > http://styx.sr.hp.com/kashi > Hewlett Packard - Santa Rosa Systems Division = > http://www.ap.net/~kashi > > ---------- > From: Cunningham Graham, IK 23 > Sent: Wednesday, September 25, 1996 11:59 PM > To: 'mfc-l' > Subject: Re: Disabling Column Sizing in CListCtrl > > [Mini-digest: 2 responses] > > you have to trap the listctrl onnotify message somthing like the code > below > > BOOL CExtListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* > pResult)=20 > { > UINT code =3D ((NMHDR*)lParam)->code; > int nColumn; > CRect rect; > > switch (code) > { > case HDN_ENDTRACKA: //Done this cause winnt always uses a unicode > header ctrl. > case HDN_ENDTRACKW: > case HDN_BEGINTRACKA: > case HDN_BEGINTRACKW: > case HDN_TRACKA: > case HDN_TRACKW: > //do what you want here to handle these events To disable tracking return here, WITHOUT calling CListCtrl::OnNotify(wParam, lParam, pResult) > break; > default: > break; > } > =09 > return CListCtrl::OnNotify(wParam, lParam, pResult); > } > > Graham Cunningham > 00 41 31 338 0633 > > >---------- > >From: jeff.moss@gtri.gatech.edu[SMTP:jeff.moss@gtri.gatech.edu] > >Sent: Dienstag, 24. September 1996 23:19 > >To: mfc-l@netcom.com > >Subject: Disabling Column Sizing in CListCtrl > > > >Environment: VC 4.0, WinNT 3.51 > > > >I've tried trapping LVM_SETCOLUMNWIDTH, and the various LVN_* notifiers > >but > >it seems that the actual sizing is done somewhere beyond my control. > > > >The CListCtrl I use is my own derived class and is OWNERDRAW_FIXED. > > > >Has anyone done this successfully? > > > >MOSS, JEFFREY N --- Research Scientist > >ITL/CSITD=20 > >Georgia Tech Research Institute > >Georgia Institute of Technology > >Atlanta Georgia, 30332 > > > >jeff.moss@gtri.gatech.edu > > > >(404) 894-5959 (voice) > >(404) 894-7080 (fax) > > > > > -----From: Mario Contestabile > > BOOL YourListCtrl::OnNotify(...){ > > BOOL bret =3D TRUE; > if ((NMHDR*)lParam)->code =3D=3D HDN_BEGINTRACK) > bret =3D FALSE; > > *pResult =3D 0; > return bret; > } -- ...A closed mouth gathers no foot... _____________________________________________________________ Si Cruse Front Office IT Development, Credit Suisse Financial Products 1 Cabot Square, London E14 4QJ Phone: +44 171 516 2948 Fax: +44 171 516 2688 mailto:scruse@csfp.co.uk http://www.cruse.demon.co.uk -----From: groftde@ebs.ac.com (Derek F. Groft - UTL) Try this: switch ( ((NMHDR*)lParam)->code ) { case HDN_ENDTRACKA: case HDN_ENDTRACKW: case HDN_TRACKA: case HDN_TRACKW: case HDN_BEGINTRACKA: case HDN_BEGINTRACKW: *pResult = TRUE; // Return TRUE to ignore tracking return TRUE; // Return TRUE to kill this message default: break; } return CListCtrl::OnNotify(wParam, lParam, pResult); -----From: Asaf KashiHere is my current OnNotify(...): BOOL CPropertiesListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { UINT code = ((NMHDR*)lParam)->code; switch (code) { case HDN_ENDTRACKA: case HDN_ENDTRACKW: case HDN_BEGINTRACKA: case HDN_BEGINTRACKW: case HDN_TRACKA: case HDN_TRACKW: return TRUE; default: break; } return CListCtrl::OnNotify(wParam, lParam, pResult); } This does NOT work. After getting a few responses from the list, it seems that this code should work. Any ideas? Asaf --- Asaf Kashi kashi@ap.net kashi@sr.hp.com Software Development Engineer internal-hp: http://styx.sr.hp.com/kashi Hewlett Packard - Santa Rosa Systems Division http://www.ap.net/~kashi
Barry Tannenbaum -- barry@dddv.com Friday, October 25, 1996 >I tried using your method and I can verify that I am intercepting the = >HDN messages in the switch statement. I want to ignore these message = >and not let the user resize, so I tried sending a TRUE and then later = >FALSE(just to see if it changes anything) Neither one did what I = >wanted. How can I just ignore the HDN_TRACK(begin/end/track) messages? >All I want is to disable the header sizing in my listctrl. I did something similar recently. I wanted to restrict sizing. The following is a snippet from my solution: switch (pNotify->hdr.code) { case HDN_TRACKA: case HDN_TRACKW: // Make sure that this is the first column if (0 != pNotify->iItem) break; // If the width is less than we want to allow, force it to the // minimum width if (pNotify->pitem->cxy < m_cxMin[0]) pNotify->pitem->cxy = m_cxMin[0]; break; } // Let the base class do it's thing return CListCtrl::WindowProc(message, wParam, lParam); - Barry -------------------------------------------------------------------------------- 3DV Technology, Inc Phone: (603) 595-2200 X228 410 Amherst St., Suite 150 Fax: (603) 595-2228 Nashua, NH 03063 Net: barry@dddv.com
| Вернуться в корень Архива |