VC控件--用Spin控件完成对字符的增减

VC控件--用Spin控件完成对字符的增减

响应UDN_DELTAPOS消息

 

旋转按钮控件的消息UDN_DELTAPOS

表示控件的位置将要改变

 

原理 , 重载Spin控件的UDN_DELTAPOS消息 , 将会多出如下函数:

 

void CTestDlg::OnDeltaposSpin3(NMHDR* pNMHDR, LRESULT* pResult)

{

    NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

    if(pNMUpDown->iDelta == 1)        // 如果此值为1 , 说明点击了Spin的往下箭头

    {

         //对字符做相关处理 , 例如将"a" 变为  "b"

    }

    else if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往上箭头

    {

         //对字符做相关处理 , 例如将"b" 变为  "a"

    }

 

    *pResult = 0;

}

 

详细做法:

 

1: 假设你编辑框为IDC_EDIT , SPIN按钮为IDC_SPIN .

2: Ctrl + W  , 进入Class Wizard , 在Object IDs列选择IDC_SPIN , 在Messages列选择UDN_DELTAPOS , 点击"Add Function" 按钮.将弹出"OnDeltaposSpin"的对话框 ,点OK 添加这个函数.然后点"Edit Code"  , 进入新添加的函数里 .

3: 将会新添加一个函数.

void CTestDlg::OnDeltaposSpin(NMHDR* pNMHDR, LRESULT* pResult) . . .

4: 添加如下代码:

 

void CTestDlg::OnDeltaposSpin(NMHDR* pNMHDR, LRESULT* pResult)

{

    NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

 

    CWnd* pWnd = (CWnd*)GetDlgItem(IDC_EDIT);    //得到指向编辑框的窗口指针

    CString strValue ;

    pWnd->GetWindowText(strValue);                 //得到编辑框中的内容

 

    if(pNMUpDown->iDelta == 1)                    //如果点击的是Spin中的往上按钮

    {

             if(!strValue.IsEmpty())

             {

                  strValue.SetAt(0 , strValue[0] + 1);   //编辑框首字母加1

                 pWnd->SetWindowText(strValue);         //保存修改

             }

    }

    else if(pNMUpDown->iDelta == - 1)    //如果点击的是Spin中往下按钮

    {

             if(!strValue.IsEmpty())

             {

                  strValue.SetAt(0 , strValue[0] - 1);   //编辑框首字母减1

                  pWnd->SetWindowText(strValue);         //保存修改

             }

    }

    *pResult = 0;

}

 

使用上述做法,后来遇到一个问题:当一直按住上或者下时,增大16个后就不再增大,后来发现,将条件改成大于0和小于0就可以了,大于0表示向上按钮

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/primer_programer/archive/2007/12/26/1968574.aspx 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值