急问关于分隔窗口界面刷新的问题!

xwolf1979 2005-08-23 05:26:56
我在MainForm里面用分隔条分出一部分专门调用显示对话框
此对话框的属性中VSCroll为真,然后我在下面函数里添加了下拉条的响应命令
void CAlarmDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
UpdateData(TRUE);
int nMinPos;
int nMaxPos;
int nOffset = 10;
SCROLLINFO info;
GetScrollRange(SB_VERT, &nMinPos, &nMaxPos);
nMaxPos = GetScrollLimit(SB_VERT);
int nCurPos = GetScrollPos(SB_VERT);
CRect rect;
GetWindowRect(rect);
switch(nSBCode) {
     ...
case SB_THUMBTRACK:
{
int postmp2 = nCurPos;
nCurPos = nPos;
ScrollWindowEx(0,postmp2-nCurPos,NULL,NULL,NULL,NULL,SW_SCROLLCHILDREN);
InvalidateRect(rect);
...

}

但是运行后,来回托动下拉条几次就会出现调试错误,提示为“未知错误0x80000003”
如果注释掉InvalidateRect(rect),这个错误就不会出现,但界面也无法刷新了。
请问那位知道或碰到过这样的问题的可以指教一下么!不胜感激!!
着急中。。。。
...全文
84 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xwolf1979 2005-08-24
对 milozy1983(跳蚤侦探):
我单独将这段代码放到一个新工程里,运行后,来回拖动滚动条几十次后,也出现了上述错误。
回复
xwolf1979 2005-08-24
用GetClientRect也同样有问题阿
不知道有没有用VSCroll的例子,还有就是拖动滚动条时的闪烁问题应怎么解决呢?
回复
goodboyws 2005-08-24

CRect rect;
GetWindowRect(rect);
InvalidateRect(rect);
用法不对啊
应该是
CRect rect;
GetClientRect(rect);
InvalidateRect(rect);
或者你的代码不完整??
回复
xwolf1979 2005-08-24
对 milozy1983(跳蚤侦探):
请问能否把你测试我的代码的程序发给我看看呢?我想对照一下也许能找到答案。
xwolf1979@163.com 谢了!!

对 dirdirdir3(风) :
OnPaint和OnDraw函数没有改过。
回复
dirdirdir3 2005-08-23
onpaint,ondraw里面做了什么?
回复
milozy1983 2005-08-23
我试了下你的代码没出问题,你是否正确使用FormView了呢?
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-23 05:26
社区公告
暂无公告