获取EditCtrl中数字的方法

    xiaoxiao2026-04-02  7

    方法一:

    使用CEdit::GetWindowText()函数先获取字符串,然后使用atoi函数转换为整型,下面以计算俩个编辑框数字之和并显示到结果编辑框上的函数内容为例:

    int num1,num2,result;

    char ch1[10],ch2[10],ch3[10]; GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10); num1=atoi(ch1); num2=atoi(ch2); result=num1+num2; itoa(result,ch3,10);//将计算结果转换为字符,十进制

    GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);

    方法二:

    使用UINT GetDlgItemInt(int nID,BOOL *lpTrans=NULL,BOOL bSigned=TRUE)函数,该函数功能为获取控件中里面字符串并转换成int类型返回。 参数1:控件ID, 参数2:接收错误信息

    可能出现的错误信息有:

    1.ID无效,并且超过指定大小,比如说:ID为12345677,这个就不行. 2.输入不能解析为一个int类型的,比如输入:"bvbvbvbv","3.5666", 当然后面可以解析为一个浮点型,在这里取得的值为3,但是还是会有错误信息 如果不指定第二个参数,就不会获得任何错误信息,这个参数很有用的,对输入的判断是否可以解析为int类型或者是否有效,很有用的,我们经常有这个参数来判断用户的输入是否合法 参数3:默认为true,主要是针对"-123",像这样的字符,它可以把前面的"-"解析为负号,那么就是标准的int类型了,如果设置为false,那么它不可以有 负数,因为在这里的"-"号,被认为是不合法的 举例: BOOL flag; UINT ui=GetDlgItemInt(IDC_EDIT1,&flag,true); CString cs; cs.Format("%d,%d",ui,flag); MessageBox(cs);

    方法三:

    使用UINT GetDlgItemText(HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMaxCount)函数 ,该函数功能为获取对话框中指定控件的标题或文本,获取完之后然后利用_ttoi/_tcstoul/_ttof()/_tcstod()转换一下即可。 

    参数1:hDlg 窗口的句柄。

    参数2:nIDDlgItem   指定控件的标识符(ID)。 

    参数3:lpString   指向用于接收获取结果的缓冲区的指针。   

    参数4:nMaxCount   指定允许拷贝到上述缓冲中的最大字符数(按 TCHAR 字符类型),如果字符串的长度(包含结束空字符)大于指定的最大字符数,则会被截断。

    返回值:

    如果函数调用成功,返回值为拷贝到缓冲区中的 TCHAR 字符个数(不包括结束空字符)。  

    如果函数调用失败,返回值为 0 。要获取更多错误信息,请调用 GetLastError 函数。

    说明  如果字符串的长度大于缓冲区的长度,则会被截断,并以空字符结束。GetDlgItemText 函数向控件发送一条 WM_GETTEXT 消息。在 ANSI 版本中,长度指的是字节数,在 Unicode 版本中,长度指的是字符的个数。

    系统要求如下:

    动态链接库:user32.dll

    头文件:在Winuser.h中定义,需包含Windows.h文件   

    库文件:User32.lib

    转载请注明原文地址: https://ju.6miu.com/read-1308432.html
    最新回复(0)