FIX:CScrollView::OnHScroll/OnVScroll Do Not Call OnChildNotifyLast reviewed: September 19, 1997Article ID: Q150574 |
1.50 1.51 1.52 | 2.00 2.10 2.20
WINDOWS | WINDOWS NTkbprg kbbuglist kbfixlist The information in this article applies to:
SYMPTOMSScroll messages generated by scroll related controls in a CScrollView- derived object fail to invoke the control's OnChildNotify function.
CAUSECScrollView::OnVScroll and CScrollView::OnHScroll do not call SendChildNotifyLastMsg, which is responsible for calling OnChildNotify.
RESOLUTIONOverride OnVScroll and/or OnHScroll for your CScrollView-derived class, and implement this code:
void CMyView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { if (pScrollBar != NULL && pScrollBar->SendChildNotifyLastMsg()) return; // eat it // ignore scroll bar msgs from other controls if (pScrollBar != GetScrollBarCtrl(SB_VERT)) return; OnScroll(MAKEWORD(-1, nSBCode), nPos); } void CMyView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // same as above ... } STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem is corrected in Microsoft Visual C++ version 4.0.
MORE INFORMATIONOnChildNotify is called by the control's parent window when the parent window receives a notification message that applies to this control. Notification messages include control notification messages such as WM_COMMAND sent by controls, some specific Windows messages such as WM_HSCROLL, WM_VSCROLL, and WM_CTLCOLOR, and a few others. NOTE: For more information, see Tech note #21. OnChildNotify allows a control an initial opportunity to view these messages before the control reaches its parent. The code reflects corrections for a bug reported in the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q133034 TITLE : BUG: CSpinButtonCtrl Causes Assertion in Viewscrl.cpp line 698The need for CScrollView to pass scroll messages correctly to OnChildNotify arises from implementing a CSpinButtonCtrl control, or an additional CScrollbar control in the view.
REFERENCESFor additional information, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q133034 TITLE : BUG: CSpinButtonCtrl Causes Assertion in viewscrl.cpp line 698.MFC Technical Note #21 - Command and Message Routine Books Online - CWnd::OnChildNotify
|
Additional reference words: 1.50 1.51 1.52 2.00 2.10 2.20
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |