怎么区分微调控件的上下两部分,我想长按上面的按钮时发一个命令,按下一个命令在发一个命令?应该怎么做?谢谢

解决方案 »

  1.   

    ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, &OnDeltaposSpin1)
    lpnmud->iPos 与 lpnmud->iDelta两个参数告诉了你方向和位置与移动量
      

  2.   

    微软提供的方法是double click和click两种。
    不过如果楼主需要你这种方法的话,要自己重新做消息和事件了。估计要用上定时器
      

  3.   

    VC中Spin控件的使用 2  
    2011-05-11 09:59:25|  分类: ARM9|字号 订阅
     
     
    (2)旋转按钮控件的基本操作    基本操作包括基数、范围、位置设置和获取,分别说明如下:    基数的设置和获取    成员函数SetBase是用来设置其基数的,其原型如下:    int SetBase(int nBase);    此成员函数用来设置一个旋转按钮控件的基数.这个基数值决定了伙伴窗口显示的数字是十进制的还    是十六进制的.十六进制的数总是无符号的;十进制的数是有符号的.如果成功则返回先前的基数值,    如果给出的是一个无效的基数则返回一个非零值。参数nBase表示控件的新的基数.    与此函数相对应的是获取一个旋转按钮控件的基数的成员函数:UINT GetBase()const;    范围及当前位置的设定和获取    成员函数SetPos、SetRange是用来设置一个旋转按钮控件的当前位置和范围,其原型如下:      int SetPos(int nPos);    参数nPos表示控件的新位置.这个值必须在控件的上限和下限指定的范围之内.      void SetRange(int nLower,int nUpper);      void SetRange32(int nLower,int nUpper);    参数nLower和nUpper表示控件的上限和下限.任何一个界限值都不能大于UD_MAXVAL或小于    UD_MINVAL。另外,两个界限值之间的差值必须不超过UD_MAXVAL。成员函数SetRange32为此    旋转按钮控件设置32位的范围。    与上述函数相对应的成员函数有:      int GetPos()const;      DWORD GetRange()const;      void GetRange(int& lower,int& upper)const;      void GetRange32(int& lower,int& upper)const;    其他操作成员函数    CWnd* SetBuddy(CWnd* pWndBuddy);     此成员函数用来为一个旋转控件设置伙伴窗口。返回值一个指向先前的伙伴窗口的指针。参数     pWndBuddy表示指向新的伙伴窗口的指针。    BOOL SetAccel(int nAccel,UDACCEL* pAccel);    此成员函数用来设置一个旋转按钮控件的加速。如果成功则返回非零值;否则返回0。参数nAccel表    示由pAccel指定的UDACCEL结构的数目.pAccel指向一个UDACCEL结构数组的指针,该数组包含了加速    信息,其结构如下:    typedef struct{      UINT nSec;//位置改变前所等待的秒数。      UINT nInc;//位置增量。    }UDACCEL,FAR* LPUDACCEL;    与上述函数相对应的成员函数有:    CWnd* GetBuddy()const;  UINT GetAccel(int nAccel,UDACCEL* pAccel)const;    (3)旋转按钮控件的通知消息    旋转按钮控件的通知消息只有一个:UDN_DELTAPOS,它表示控件的位置将要改变。用ClassWizard可以映射此消息,在此消息的处理函数中有个NM_UPDOWN结构需要进行    说明,其结构如下:    typedef struct _NM_UPDOWN{        NMHDR hdr; //通知代码的其他信息        int iPos; //当前位置        int iDelta; //位置的增减量,单击向上箭头此值为负数   }NMUPDOWN,FAR* LPNMUPDOWN;应用实例:用Spin控件完成对字符的增减
      

  4.   

    响应ON_WM_LBUTTONDOWN()
    OnLButtonDown(UINT nFlags, CPoint point)根据point得到当前点击的位置。根据GetClientRect( &rect )得到控件区域。就可以判断出点击的是控件的上半部分还是下半部分。