【发布时间】:2011-04-14 15:14:14
【问题描述】:
我正在开发 WinCE 中基于对话框的 MFC 应用程序。 我在对话框中创建了几个控件并向下滚动。 当我再次向上滚动时,第一个屏幕中的控件消失了。
在 OnInitDialog() 中创建的控件如下图坐标 (50,10)
test->Create(_T("Title"), WS_CHILD|WS_VISIBLE, CRect(50,10,200,40), this, ID_TITLE);
我在 OnVScroll() 中进行的滚动处理,如下所示
switch(nSBCode)
{
case SB_LINEDOWN:
{
if(nPos < max)
{
ScrollWindowEx(0, SCROLLDOWN_LINE_STEPSIZE, CRect(0,0, rect.right - 25, rect.bottom), NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE);
pScrollBar->SetScrollPos(nPos - SCROLLDOWN_LINE_STEPSIZE); //nPos+10
}
break;
}
case SB_LINEUP:
{
if(nPos > min)
{
ScrollWindowEx(0, SCROLLUP_LINE_STEPSIZE, CRect(0,0, rect.right - 25, rect.bottom), NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE);
pScrollBar->SetScrollPos(nPos - SCROLLUP_LINE_STEPSIZE); //Ex: nPos-10
}
break;
}
default:
printf("Notimplemented");
break;
}
我正在处理向下滚动和向上滚动。 向下滚动时,会显示 Dialog 中的所有控件。 但是在向上滚动时,顶部的控件消失了。
发生了什么事? 我应该在每次滚动时实现 OnPaint() 方法来绘制控件吗? 如果有,怎么做?
【问题讨论】:
-
您是否正在对这些控件进行任何移动/调整大小?也许您在某处错误地计算了界限?它们仍然起作用还是完全消失了?如果您向下滚动一点,它们会部分消失,还是始终是整个控件?
-
我的 WinCE 模拟器中没有最小化按钮。我正在使用带有 Visual Studio 2008 的 Windows Mobile 6.x SDK
-
@tenfour:总是整个控制消失。
标签: c++ visual-c++ mfc windows-mobile windows-ce