首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于滚动条结构体的有关问题

2013-10-11 
关于滚动条结构体的问题《windows程序设计》第四章文本输出例子中用GetScrollInfo函数和SetScrollInfo函数操

关于滚动条结构体的问题
《windows程序设计》第四章文本输出例子中用GetScrollInfo函数和SetScrollInfo函数操作滚动条
有个疑问,就是每次操作滚动条结构SCROLLINFO都要写入cbSize成员


case WM_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);

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);
si.cbSize=sizeof(si);  //这里又写入一次,为什么要这么勤快的写入CbSize呢,难道SetScrollInfo可能会改写cbSize?
si.fMask=SIF_RANGE|SIF_PAGE;
si.nMin=0;
si.nMax=2+iMaxWidth/cxChar;
si.nPage=cxClient/cxChar;
SetScrollInfo(hwnd,SB_HORZ,&si,TRUE);
return 0;


类似这样的操作还有几处

为什么要这样做,而不是在定义si的时候就写入cbSize,只写一次就行了,我试着这样做也没问题啊
[解决办法]

SetScrollInfo(hwnd,SB_VERT,&si,TRUE);
//你这里传过去的是地址,可能会修改里面的有效值的!
//可能是需要原来的值,所以重新赋值一次!

热点排行