一个对话框中有3个编辑框m_a   m_b    m_c ,我利用软键盘输入密码,3个编辑框共用一个软键盘,就像QQ里一样,不过3个编辑框m_a   m_b    m_c 都是输入密码的,且密码不同。问题是:
   我怎么利用一个函数在3个编辑框中输入密码。我现在的做法是: 代码如下
void Caa::Ondd(UINT nID) 
{
    ..........//str为输入的密码,省略号为获得str的密码
   m_a->SetWindowText(str);//这样不行,只能在编辑框m_a 中输入密码,不能在m_b中输入。我想在三个框中通用}

解决方案 »

  1.   

    可以进行类似如下处理,我下面是添加的某个Edit获得焦点的处理
    1.h中定义 afx_msg void memfn(UINT id)
    2.cpp中添加ON_CONTROL_RANGE(EN_SETFOCUS,idfirst,idlast,memfn)
     
     void  xxxx::memfn(UINT id)
     {
         switch(id){
         case m_a:
            break;
         case m_b:
            break;
         case m_c:
            break;
         default:break;
         }     
     }
      

  2.   

    方法是不错 但是 我这里已经用nID作为参数了
    void Caaa::Onaabb(UINT nID) 
    {
    .......//对ID处理void Caa::Ondd(UINT nID) //这里已经对ID处理,这个ID为软键盘的ID

        ..........//str为输入的密码,省略号为获得str的密码 
      m_a->SetWindowText(str);//这样不行,只能在编辑框m_a 中输入密码,不能在m_b中输入。我想在三个框中通用 
                          switch(id){     //此处再怎么对编辑框m_a  m_b    m_c的 ID进行处理啊,因为前面已经对ID进行处理了
        case m_a: 
            break; 
        case m_b: 
            break; 
        case m_c: 
            break; 
        default:break; 
        }    
    } }
      

  3.   

    可以标记一个变量m_nID,
    记住当前获得焦点的Edit的ID
    即 获取焦点函数改为void  xxxx::memfn(UINT id) 
    {
       m_nID = id; 

    你的在编辑框中的处理代码  改为   GetDlgItem(m_nID)->SetWindowText(str)
      

  4.   

    1.h中定义 
    afx_msg void Onaaaa(UINT nID) 
    afx_msg void Onbbbb(UINT nID) 2.cpp中添加
    ON_CONTROL_RANGE(EN_SETFOCUS,IDC_EDIT1 ,IDC_EDIT2,Onaaaa) ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN01, IDC_BTN10, Onbbbb)现在的问题是:
    1.进行调试运行,当点击IDC_EDIT1等编辑框时,不进入Onaaaa(UINT nID)函数
    2.点击按钮IDC_BTN01后,进入Onbbbb(UINT nID),但是不能进入switch(m_nID) 语句
    IDC_BTN01Onaaaa(UINT nID)IDC_EDIT1void xxxx::Onaaaa(UINT nID) 
    {
    m_nID = nID;
    }void xxxx::Onbbbb(UINT nID) 
    {
     ..........//str为输入的密码,省略号为获得str的密码  switch(m_nID) 
    {
    case IDC_EDIT1 :
    GetDlgItem(IDC_EDIT1)->SetWindowText(m_strPassword);
    break; case    IDC_EDIT2 :
    GetDlgItem(IDC_EDIT2)->SetWindowText(m_strPassword);
    break; case IDC_EDIT3 :
    GetDlgItem(IDC_EDIT3)->SetWindowText(m_strPassword);
    break;

    default:
    break;
    }}
      

  5.   

    1.h中定义 
    afx_msg void Onaaaa(UINT nID) 
    afx_msg void Onbbbb(UINT nID) 2.cpp中添加 
    ON_CONTROL_RANGE(EN_SETFOCUS,IDC_EDIT1 ,IDC_EDIT2,Onaaaa) ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN01, IDC_BTN10, Onbbbb) 现在的问题是: 
    1.进行调试运行,当点击IDC_EDIT1等编辑框时,不进入Onaaaa(UINT nID)函数 
    2.点击按钮IDC_BTN01后,进入Onbbbb(UINT nID),但是不能进入switch(m_nID) 语句 
    IDC_BTN01Onaaaa(UINT nID)IDC_EDIT1void xxxx::Onaaaa(UINT nID) 

    m_nID = nID; 
    } void xxxx::Onbbbb(UINT nID) 

    ..........//str为输入的密码,省略号为获得str的密码   GetDlgItem(m_nID)->SetWindowText(m_strPassword);
    //m_nID的值每次都为3435973836,m_nID定为为    unsigned int}
    报错:unhandled exception in user.exe(mfc42D.dll):oxC0000005 Access Violation
      

  6.   

    1.h中定义 
    afx_msg void Onaaaa(UINT nID) 
    afx_msg void Onbbbb(UINT nID) 2.cpp中添加 
    ON_CONTROL_RANGE(EN_SETFOCUS,IDC_EDIT1 ,IDC_EDIT2,Onaaaa) ON_CONTROL_RANGE(BN_CLICKED, IDC_BTN01, IDC_BTN10, Onbbbb) 现在的问题是: 
    1.进行调试运行,当点击IDC_EDIT1等编辑框时,不进入Onaaaa(UINT nID)函数 void xxxx::Onaaaa(UINT nID) 

    m_nID = nID; } void xxxx::Onbbbb(UINT nID) 

    ..........//str为输入的密码,省略号为获得str的密码   GetDlgItem(m_nID)->SetWindowText(str); 
    //m_nID的值每次都为3435973836,m_nID定为  unsigned int 。} //我调试了一下就没有响应
    报错:unhandled exception in user.exe(mfc42D.dll):oxC0000005 Access Violation