主题:WM_NOTIFY的通知消息UDN_DELTAPOS怎么使用?
UDN_DELTAPOS
lpnmud = (LPNMUPDOWN) lParam;
Sent by the operating system to the parent window of an up-down control when the position of the control is about to change. This happens when the user requests a change in the value by pressing the control's up or down arrow. The UDN_DELTAPOS message is sent in the form of a WM_NOTIFY message.
Return nonzero to prevent the change in the control's position, or zero to allow the change.
lpnmud
Address of an NMUPDOWN structure that contains information about the position change.
The iPos member of this structure contains the current position of the control. The iDelta member of the structure is a signed integer that contains the proposed change in position. If the user has clicked the up button, this is a positive value. If the user has clicked the down button, this is a negative value.
The UDN_DELTAPOS notification is sent before theWM_VSCROLL orWM_HSCROLL message, which actually changes the control's position. This lets you examine, allow, modify, or disallow the change.
以上是引用于MSDN帮助文件,上面说到了“This lets you examine, allow, modify, or disallow the change”和“Return nonzero to prevent the change in the control's position, or zero to allow the change”,为什么我处理UDN_DELTAPOS 通知消息时返回TRUE,值还是没有变化,没能阻止它的变化。
LPNMHDR lpnmh;
LPNMUPDOWN lpnmud;
……
case WM_NOTIFY:
lpnmh = (LPNMHDR)lParam;
switch(lpnmh->code)
{
case UDN_DELTAPOS:
lpnmud = (LPNMUPDOWN)lParam;
if(lpnmud->iPos > 20 )
return TRUE;
else
return FALSE;
}
break;
……
各位大侠帮帮我吧,我困惑好长时间了。
[em18]
lpnmud = (LPNMUPDOWN) lParam;
Sent by the operating system to the parent window of an up-down control when the position of the control is about to change. This happens when the user requests a change in the value by pressing the control's up or down arrow. The UDN_DELTAPOS message is sent in the form of a WM_NOTIFY message.
Return nonzero to prevent the change in the control's position, or zero to allow the change.
lpnmud
Address of an NMUPDOWN structure that contains information about the position change.
The iPos member of this structure contains the current position of the control. The iDelta member of the structure is a signed integer that contains the proposed change in position. If the user has clicked the up button, this is a positive value. If the user has clicked the down button, this is a negative value.
The UDN_DELTAPOS notification is sent before theWM_VSCROLL orWM_HSCROLL message, which actually changes the control's position. This lets you examine, allow, modify, or disallow the change.
以上是引用于MSDN帮助文件,上面说到了“This lets you examine, allow, modify, or disallow the change”和“Return nonzero to prevent the change in the control's position, or zero to allow the change”,为什么我处理UDN_DELTAPOS 通知消息时返回TRUE,值还是没有变化,没能阻止它的变化。
LPNMHDR lpnmh;
LPNMUPDOWN lpnmud;
……
case WM_NOTIFY:
lpnmh = (LPNMHDR)lParam;
switch(lpnmh->code)
{
case UDN_DELTAPOS:
lpnmud = (LPNMUPDOWN)lParam;
if(lpnmud->iPos > 20 )
return TRUE;
else
return FALSE;
}
break;
……
各位大侠帮帮我吧,我困惑好长时间了。
[em18]