我遇到了旋转(上/下)控件的问题。在旋转控制的属性中,我将“Set Buddy Integer”设置为true。旋转控制位置问题(Windows)
在我dialogboxproc的WM_INITDIALOG,我的好友设置为静态文本控件:
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETBUDDY, (WPARAM)GetDlgItem(hDlg, IDC_STATIC1), 0);
我也设置最小/最大范围和起始位置:
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETRANGE, 0, MAKELPARAM(1, 1));
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETPOS, 0, 1);
当某些按钮在我的对话框中弹出,我正在更新范围和位置:
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETRANGE, 0, MAKELPARAM(2, 1));
SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_SETPOS, 0, 2);
(我正在使用变量来设置范围和位置,但因为我遇到问题,所以我手动将其设置为我刚刚发布的内容。)
直接设置位置后,我再次检查它以确认:
LRESULT lr = SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_GETPOS, 0, 0);
WORD pos = LOWORD(lr);
事实上,位置是2
接下来,我点击旋转控制的向下箭头。从2静态文本哥们更改为1。这里是我的WM_NOTIFY代码看起来像在dialogboxproc:
case WM_NOTIFY:
ncode = ((LPNMHDR)lParam)->code;
switch(ncode)
{
case UDN_DELTAPOS:
{
LRESULT lr = SendMessage(GetDlgItem(hDlg, IDC_SPIN2), UDM_GETPOS, 0, 0);
if(HIWORD(lr) == 0)
{
WORD pos = LOWORD(lr);
//Other stuff here
return TRUE;
}
按下箭头和检查pos的值之后,位置仍然是2。我先前已将位置设置为2并按下向下箭头。这个位置不应该是1吗?问题是什么?