在窗口上动态创建的CEdit,怎么控制它只能输入数值?

解决方案 »

  1.   

    创建时加上 ES_NUMBER 属性
      

  2.   

    CEidt m_edit;
    m_edit.Create();在create函数加上EM_NUMBER
      

  3.   

    MSDN上的代码:   
       // dynamically create an edit control on the view
       CEdit* pEdit = new CEdit;
       pEdit->Create(ES_NUMBER | ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP |   WS_BORDER, CRect(10, 10, 100, 100), this, 1);最重要的就是ES_NUMBER的属性。
      

  4.   

    CEdit* edtTemp = new CEdit();edtTemp->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | ES_NUMBER,
           CRect(0, 0, 60, 20), this, 1);
      

  5.   

    加了ES_NUMBER,浮点类型的数值就不能输入了!!
      

  6.   

    1.如果要只输入数字,你就设置ES_NUMBER属性
    2.如果要输入浮点数,那么你就取消ES_NUMBER属性
    现在提供给你一个笨办法:就是当焦点在edit上时,屏蔽键盘上所有按钮,只响应"."和数字键
    BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {  
    if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd )
    {
    switch( pMsg->wParam )
    {
    case VK_RETURN: //屏蔽回车
    return TRUE;
                            case 65:       //屏蔽A
    return TRUE;
                            ....................
                            //具体的Virtual-Key Codes 你可以查madn
    }      
    }

    return CDialog::PreTranslateMessage(pMsg);
    }