CEdit :: SetPasswordChar在kill focus事件中不起作用

时间:2013-12-06 01:07:35

标签: mfc passwords cedit

我的项目有一个带密码模式的文本框。但是当它有焦点时必须显示它,并在它杀死焦点时隐藏角色。

这是我的源代码。 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()无法正常工作。我调试了它,然后检查输入这个模块。

我该如何解决这个问题。感谢。

1 个答案:

答案 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();
}

感谢。