码迷,mamicode.com
首页 > Windows程序 > 详细

win32: 查询滚动条相关信息的注意事项

时间:2015-06-18 09:29:39      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

今天打算判断一个窗口是否出现垂直滚动条,我的代码:

SCROLLINFO si; //滚动条信息结构体
                    si.cbSize = sizeof(SCROLLINFO); //必须
                    si.fMask = SIF_ALL;
                    GetScrollInfo(hwnd_frame_preview, SB_VERT, &si);

                    printf("si.nPage:%d\n", si.nPage);
                    printf("si.nPos:%d\n", si.nPos);
                    printf("si.nMin:%d\n", si.nMin);
                    printf("si.nMax:%d\n", si.nMax);

 

if(si.nPage > 0)

{

    printf("有垂直滚动条\n");

}

else

{

    printf("没有垂直滚动条\n");

}

 

但测试的时候发现,当没有显示滚动条的时候,si.nPage, si.nPos, si.nMin, si.nMax 返回的值都很奇怪,并不是我想像中的 0

 

输出结果:

si.nPage:2010220586
si.nPos:0
si.nMin:2010220634
si.nMax:2290948

si.nPage:2010220586
si.nPos:0
si.nMin:2010220634
si.nMax:2290948

 

从这样的输出结果看,如果使用 si.nPage 来判断有没有垂直滚动条已不准确了。

 

后来试了一下 GetScrollRange()

int nMin,nMax;
GetScrollRange(hwnd_frame_preview,SB_VERT,&nMin,&nMax);
printf("nMin:%d\n",nMin);
printf("nMax:%d\n",nMax);

 

输出结果:

nMin:0
nMax:0

 

看来,以后还是使用GetScrollRange()靠谱。

 

2013-08-29

win32: 查询滚动条相关信息的注意事项

标签:

原文地址:http://www.cnblogs.com/personnel/p/4584909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!