(一)控件
- 滚动条
SCROLLINFO结构中的nPage和nPos是有范围限制的,超出范围设置时,Windows会自动纠正。
0<=nPage<=nMax-nMin+1
0<=nPos<=nMax-(nPage-1)
所以不要总以为自己设置了页面大小,设置了滚动条位置,滚动条的页面和位置就一定会如你所设置。
- 编辑框
在使用Edit_SetSel的时候,一定要将焦点定格在Edit上,否则选择效果不显示。
(二)编程技巧
- 窗口子类
对于改变控件一些常规行为用窗口的子类的方式是非常好的。例如用鼠标点击某个按钮时,将某个编辑框全选,不要以为在WM_COMMAND里面对应的按钮消息里面添加就可以了。可以试一下是不行的?关键在于鼠标点击,在鼠标左键松开的时刻,先发送WM_COMMAND消息,后发送WM_SETFOCUS给按钮,因为要让编辑框全选必须让编辑框得到焦点,但是在WM_COMMAND把焦点给编辑框只是暂时的,紧接着按钮本身的WM_LBUTTONUP会把焦点设置到自己身上,所以编辑框的获得焦点只是一瞬间。为了解决这个问题,就是给按钮使用窗口子类的方法。在WM_LBUTTONUP中先调用CallWindowProc,然后在把焦点转给编辑框。