Windows编程的方方面面

(一)控件

  • 滚动条

 

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,然后在把焦点转给编辑框。

你可能感兴趣的:(Windows编程的方方面面)