Questions relating CListCtrl
edwardlau@hactl.com.hk Friday, July 12, 1996 Environment: VC++ 4.0 under Win 95 I am using a CListCtrlEx control which is derived from CListCtrl. I am attempting to disable the resizing of the column header by returning TRUE when HDN_BEGINTRACK is captured, but this does not work..... Moreover, I want to get the column width required by using GetStringWidth but also fail with GPF. Can anyone tell me what's wrong with my code?? PS : I have once want to set the style of the header control, whenever I use HDS_DIVIDERTRACK and when compiled, the compiler just tell me it's an undeclared identifier. Do I missing some files to include or what else???? Thanks in advance...... Edward, PEI, edwardlau@hactl.com.hk BOOL CListCtrlEx::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { HD_NOTIFY FAR * phdn = (HD_NOTIFY FAR *) lParam; NMHDR hdr=phdn->hdr; HD_ITEM FAR* pitem=phdn->pitem; int iItem = phdn->iItem; switch(hdr.code) { case HDN_ENDTRACKW: case HDN_ENDTRACKA: { if (pitem->mask & HDI_WIDTH) { WrapText(iItem); } break; } case HDN_BEGINTRACKW: case HDN_BEGINTRACKA: { if (!m_bAllowColSizing) return TRUE; } break; } return CListCtrl::OnNotify(wParam, lParam, pResult); } CHeaderCtrl* CListCtrlEx::GetHeaderCtrl() { m_pHeadCtrl = (CHeaderCtrl*)GetWindow(GW_CHILD); return (m_pHeadCtrl); } void CListCtrlEx::WrapText(int iColItem) { CString tmpst; TCHAR szBuffer[255]; HD_ITEM hdi; for (int idx = 0; idx < GetHeaderCtrl()->GetItemCount(); idx++) { hdi.mask = HDI_HEIGHT | HDI_TEXT; hdi.pszText = szBuffer; hdi.cchTextMax = 255; m_pHeadCtrl->GetItem(iColItem,&hdi); tmpst.Format("The width for this column is %s", GetStringWidth(hdi.pszText); AfxMessageBox(tmpst); } }
Mario Contestabile -- Mario_Contestabile.UOS__MTL@UOSMTL2.universal.com Monday, July 15, 1996 Snip()=============== I am using a CListCtrlEx control which is derived from CListCtrl. I am attempting to disable the resizing of the column header by returning TRUE when HDN_BEGINTRACK is captured, but this does not work..... Moreover, I want to get the column width required by using GetStringWidth but also fail with GPF. Can anyone tell me what's wrong with my code?? PS : I have once want to set the style of the header control, whenever I use HDS_DIVIDERTRACK and when compiled, the compiler just tell me it's an undeclared identifier. Do I missing some files to include or what else???? Thanks in advance...... Edward, PEI, edwardlau@hactl.com.hk BOOL CListCtrlEx::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { HD_NOTIFY FAR * phdn = (HD_NOTIFY FAR *) lParam; NMHDR hdr=phdn->hdr; HD_ITEM FAR* pitem=phdn->pitem; int iItem = phdn->iItem; switch(hdr.code) { case HDN_BEGINTRACKW: case HDN_BEGINTRACKA: { if (!m_bAllowColSizing) return TRUE; } break; } EndSnip()============ You can see for the on-line help for OnNotify(): pResult Pointer to an LRESULT variable in which to store the result code if the message is handled. So, returning non-zero means you are processing the message, and you need to store the returned value in pResult. There is even a macro in windowsx.h, SetDlgMsgResult(), which can do this for you. Use pResult with MFC. mcontest@universal.com
Roger Onslow -- Roger_Onslow@compsys.com.au Monday, July 22, 1996 > I am using a CListCtrlEx control which is derived from CListCtrl. I am > attempting to disable the resizing of the column header by returning > TRUE when HDN_BEGINTRACK is captured, but this does not work..... you need to set *pResult = TRUE; as how the return value is set the actual return value of OnNotify indicates whether you have handled the message or not, returning FALSE means you didn't do it so it is default processed elsewhere, return TRUE means you handled it ll yourself. (See help on OnNotify); > tmpst.Format("The width for this column is %s", > GetStringWidth(hdi.pszText); Should by "%d" not "%s" /|\ Roger Onslow ____|_|.\ ============ _/.........\Senior Software Engineer /CCC.SSS..A..\ /CC..SS...A.A..\ Computer /.CC...SS..AAA...\ Systems /\.CC....SSAA.AA../ Australia \ \.CCCSSS.AA.AA_/ \ \...........// Ph: +61 49 577155 \ \...._____// Fax: +61 49 675554 \ \__|_/\_// RogerO@compsys.com.au \/_/ \//
Roger Onslow -- Roger_Onslow@compsys.com.au Monday, July 22, 1996 > I am using a CListCtrlEx control which is derived from CListCtrl. I am > attempting to disable the resizing of the column header by returning > TRUE when HDN_BEGINTRACK is captured, but this does not work..... you need to set *pResult = TRUE; as how the return value is set the actual return value of OnNotify indicates whether you have handled the message or not, returning FALSE means you didn't do it so it is default processed elsewhere, return TRUE means you handled it ll yourself. (See help on OnNotify); > tmpst.Format("The width for this column is %s", > GetStringWidth(hdi.pszText); Should by "%d" not "%s" /|\ Roger Onslow ____|_|.\ ============ _/.........\Senior Software Engineer /CCC.SSS..A..\ /CC..SS...A.A..\ Computer /.CC...SS..AAA...\ Systems /\.CC....SSAA.AA../ Australia \ \.CCCSSS.AA.AA_/ \ \...........// Ph: +61 49 577155 \ \...._____// Fax: +61 49 675554 \ \__|_/\_// RogerO@compsys.com.au \/_/ \//
| Вернуться в корень Архива |