FIX: CScrollView::OnHScroll/OnVScroll Do Not Call OnChildNotify (150574)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++ for Windows, 16-bit edition 1.5
- Microsoft Visual C++ for Windows, 16-bit edition 1.51
- Microsoft Visual C++ for Windows, 16-bit edition 1.52
- Microsoft Visual C++, 32-bit Editions 2.0
- Microsoft Visual C++, 32-bit Editions 2.1
- Microsoft Visual C++, 32-bit Editions 2.2
This article was previously published under Q150574 SYMPTOMS
Scroll messages generated by scroll related controls in a CScrollView-
derived object fail to invoke the control's OnChildNotify function.
CAUSE
CScrollView::OnVScroll and CScrollView::OnHScroll do not call
SendChildNotifyLastMsg, which is responsible for calling OnChildNotify.
RESOLUTION
Override 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
...
}
STATUS
Microsoft 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.
REFERENCES
For additional information, please see the following article in the
Microsoft Knowledge Base:
133034 BUG: CSpinButtonCtrl Causes Assertion in viewscrl.cpp line 698.
MFC Technical Note #21 - Command and Message Routine
Books Online - CWnd::OnChildNotify
Modification Type: | Major | Last Reviewed: | 12/10/2003 |
---|
Keywords: | kbBug kbDocView kbfix kbNoUpdate kbVC400fix KB150574 |
---|
|