一个对话框中有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中输入。我想在三个框中通用}
我怎么利用一个函数在3个编辑框中输入密码。我现在的做法是: 代码如下
void Caa::Ondd(UINT nID)
{
..........//str为输入的密码,省略号为获得str的密码
m_a->SetWindowText(str);//这样不行,只能在编辑框m_a 中输入密码,不能在m_b中输入。我想在三个框中通用}
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;
}
}
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;
}
} }
记住当前获得焦点的Edit的ID
即 获取焦点函数改为void xxxx::memfn(UINT id)
{
m_nID = id;
}
你的在编辑框中的处理代码 改为 GetDlgItem(m_nID)->SetWindowText(str)
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;
}}
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
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