关于CFormView的滚动条问题

icper 2005-04-15 05:38:02
以下是我根据formview的大小决定是否显示滚动条

问题在于:
当view的大小正好处于显示与不显示滚动条的临界状态时将会长时间导致界面不断显示与不显示滚动条状态
2000下问题不大,自己反复显示几次就好了,
98就会把系统资源耗尽然后fatal

请问有什么好方法避免这种情况出现?

void CShowImageView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);

// TODO: Add your message handler code here
if (GetSafeHwnd())
{
SetScrollSizes(MM_TEXT,CSize(cx<768?768+5:cx+5,cy<576?576+5:cy+5),
CSize(300,300),CSize(100,100));

if(cx < 768)
CFormView::ShowScrollBar(SB_HORZ,TRUE);//显示水平滚动条
else
CFormView::ShowScrollBar(SB_HORZ,FALSE);//隐藏水平滚动条

if(cy < 576)
CFormView::ShowScrollBar(SB_VERT,TRUE);//显示竖直滚动条
else
CFormView::ShowScrollBar(SB_VERT,FALSE);//隐藏竖直滚动条

POINT pt;
pt.x = pt.y = 0;
ScrollToPosition(pt);
}
}
...全文
185 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
icper 2005-04-16
  • 打赏
  • 举报
回复
在onsize里加上Invalidate(TRUE)后不再出错了,
但是那种临界状态的闪烁还是存在,只不过能在较短的时间内恢复

有没有更好的方法?

是不是要计算滚动条的长宽等等??
icper 2005-04-16
  • 打赏
  • 举报
回复
谢谢先
试一下看看
fvan 2005-04-15
  • 打赏
  • 举报
回复
在OnInitialUpdate()里添加
CSize sizeTotal;
sizeTotal.cx=0;
sizeTotal.cy=0;
SetScrollSizes(MM_TEXT, sizeTotal);
在onsize()里加
CFormView::OnSize(nType, cx, cy);
Invalidate(TRUE);
TianChong 2005-04-15
  • 打赏
  • 举报
回复
将临界值的间隔加大即可。例如:判断>768显示时,而隐藏时要<=758,这样就不会了.

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧