鱼C论坛

 找回密码
 立即注册
查看: 3977|回复: 4

学windows程序设计遇到问题,求助各位鱼油

[复制链接]
发表于 2013-1-19 13:42:59 | 显示全部楼层 |阅读模式
5鱼币
学到  SetScrollInfo 和 GetScrollInfo  函数时,
为什么用到这两个函数时都要 si.cbSize        = sizeof( si);
我觉得这个 sizeof( si) 不是固定的吗, 为什么每次用到这两个函数都要  si.cbSize        = sizeof( si);
各位鱼油帮帮忙,指点指点,先谢谢了!

最佳答案

查看完整内容

winproc是消息处理函数,switch-case每一次只处理消息队列中的某个消息,例如你说的WM_SIZE或者WM_VSCROLL,WM_CREATE等等,这两个东西虽然在一个函数中,但是每次执行却只有一个,尽管二者都需要对si这个结构填充,也是相互独立的,当然你也可以把它单独拿出来,但是这样就影响了整个程序的协调性
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-19 13:43:00 | 显示全部楼层

winproc是消息处理函数,switch-case每一次只处理消息队列中的某个消息,例如你说的WM_SIZE或者WM_VSCROLL,WM_CREATE等等,这两个东西虽然在一个函数中,但是每次执行却只有一个,尽管二者都需要对si这个结构填充,也是相互独立的,当然你也可以把它单独拿出来,但是这样就影响了整个程序的协调性
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-19 14:25:48 | 显示全部楼层
在MSDN中是这样给出的:
lpsi
[in/out] Pointer to a SCROLLINFO structure. Before calling GetScrollInfo, set the cbSize member of the structure to sizeof(SCROLLINFO), and set the fMask member to specify the scroll bar parameters to retrieve. Before returning, the function copies the specified parameters to the appropriate members of the structure.
标准给出的要求是在调用GetScrollInfo和SetScrollInfo之前,要先填充cbSize和fMask,cbSize大小的确是固定的,在内部就应该是在内存中计算偏移量用的,所以这个参数是必要的,至于标准为什么这么给出,就不知道了。。。坐等大神解惑
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-19 14:42:07 | 显示全部楼层
翠竹 发表于 2013-1-19 14:25
在MSDN中是这样给出的:
lpsi
Pointer to a SCROLLINFO structure. Before calling GetScrollInfo, set ...

我给你举个书上(windows程序设计)的例子的部分:
其中在 WM_SIZE中有这样一部分:
           si.cbSize = sizeof (si) ;
          si.fMask  = SIF_RANGE | SIF_PAGE ;
          si.nMin   = 0 ;
          si.nMax   = NUMLINES - 1 ;
          si.nPage  = cyClient / cyChar ;
          SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;

在WM_VSCROLL中有这样一部分
          si.cbSize = sizeof (si) ;
          si.fMask  = SIF_ALL ;
          GetScrollInfo (hwnd, SB_VERT, &si) ;

这里的 si 是 SCROLLINFO 型 同一个变量(因为他们都在winproc函数中),
我就想问sizeof (si)的值是固定的为什么要设置多遍呢,
我觉得设置一次就行了呀,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-19 15:37:11 | 显示全部楼层
谢谢你啊,差不多懂了!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-9 00:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表