我的项目有一个带密码模式的文本框。但是当它有焦点时必须显示它,并在它杀死焦点时隐藏角色。
这是我的源代码。 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()无法正常工作。我调试了它,然后检查输入这个模块。
我该如何解决这个问题。感谢。
答案 0 :(得分:0)
我自己做了。我在sendmessage之后错过了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();
}
感谢。