CEdit::SetPasswordChar在终止焦点事件中不起作用



我有一个项目有一个带密码模式的文本框。但这必须在有焦点的时候表现出来,在杀死他的焦点时隐藏角色。

这是我的源代码。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();
}

谢谢。

最新更新