我有一个项目有一个带密码模式的文本框。但这必须在有焦点的时候表现出来,在杀死他的焦点时隐藏角色。
这是我的源代码。m_editBox是IDC_EDIT1的控制变量。
void CEditBoxTestDlg::OnEnSetfocusEdit1()
{
//m_editBox.SetPasswordChar(0);
}
void CEditBoxTestDlg::OnEnKillfocusEdit1()
{
//m_editBox.SetPasswordChar('*'); //1
m_editBox.SendNotifyMessage(EM_SETPASSWORDCHAR, (WPARAM) '*', NULL); //2
}
但是OnEnKillfocusEdit()不能很清楚地工作。我调试了它,并检查进入这个模块。
我怎样才能解决这个问题。谢谢
我自己做的。发送消息后我错过了Invalidate()函数。我检查了SetpasswordChar()、SendNotifyMessage、PostMessage()也能很好地工作。
这是我的代码:
void CEditBoxTestDlg::OnEnSetfocusEdit1()
{
m_editBox.SetPasswordChar(0);
m_editBox.Invalidate();
}
void CEditBoxTestDlg::OnEnKillfocusEdit1()
{
//This 3 types also works fine
//m_editBox.SetPasswordChar('*');
//m_editBox.SendNotifyMessage(EM_SETPASSWORDCHAR, (WPARAM) '*', NULL);
m_editBox.PostMessage(EM_SETPASSWORDCHAR, (WPARAM) '*', NULL);
m_editBox.Invalidate();
}
谢谢。