2、关联Edit Box 控件,这个我弄了半天才明白,首先要在资源编辑中的对话框编辑界面,设定Tab控件的顺序(格式->Tab键顺序)。将Edit Box的序号设置成Up/Down控件序号减一,设定Up/Down的属性Auto Buddy为True,Set Buddy Integer为true。 3、现在已经能够正常的使用Up/Down功能了。 可是如果不想用控件关联,而是自己设定逻辑怎么办呢?几个小时之前我不会关联的方法,想要努力实现手动维护Edit box的功能。最后终于有了些教训,得到了点心得: 在Up/Down的父窗口(一般是对话框)的消息处理函数中,对WM_VSCROLL消息做一个处理,当lParam与Up/Down的窗口句柄相等时,对Up/Down的操作结束 ,其中wParam中的高位部分是Up/Down的值,用这个值来更新Edit Box。 WM_VSCROLL nScrollCode = (int)LOWORD(wParam); nPos = (short int)HIWORD(wParam); hwndScrollBar = (HWND) lParam;
今天我的教训是使用了WM_NOTIFY的消息,处理UDN_DELTAPOS的通知,lParam是一个结构:NMUPDOWN,通过这个结构来更新Edit box,因为这个通知不等操作结束就已经发出,并且这个结构体中有当时的位置以及变化量,更新时候还需要将当时位置加上变化量。这样的更新就会出现一定的问题,有时候pos已经到了设定好的范围边界,pos加上变化量就会超出边界,还要继续判断,效率等等问题就出现了,而且十分麻烦。所以最好使用关联的方法,如果有特殊要求就用WM_VSCROLL响应,千万不要使用UDN_DELTAPOS,白花功夫,呵呵。就写到这里. 今天是除夕了,祝所有程序员朋友新春快乐!! |