MFC登录对话框切换密码显示后EditControl无法即时更新的解决方法
解决MFC密码框切换显示后不即时更新的问题
你的问题根源在于设置SetPasswordChar后,编辑控件并没有立即触发重绘,需要手动强制它刷新界面。
修改后的代码如下:
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1); if (pEdit->GetPasswordChar() == 9679) { pEdit->SetPasswordChar(0); } else { pEdit->SetPasswordChar(9679); } // 强制控件立即重绘,更新显示 pEdit->Invalidate(); pEdit->UpdateWindow();
说明:
- 先把编辑控件指针存起来,避免重复调用
GetDlgItem,既高效又简洁。 Invalidate()会标记控件区域为需要重绘,UpdateWindow()则立即执行重绘操作,两者配合就能让控件显示立刻更新。- 你之前尝试发送
EN_UPDATE消息没用是因为这个消息是控件发送给父窗口的通知(告知父窗口自己内容要更新),不是用来触发控件本身重绘的。
也可以用RedrawWindow()一步到位替代Invalidate()和UpdateWindow(),效果完全一致:
pEdit->RedrawWindow();
内容的提问来源于stack exchange,提问作者Medic 84
相关产品推荐
相关产品推荐

