如何使wxWidgets密码可见,我使用'wxTE_PASSWORD'标志?

时间:2018-04-02 11:47:34

标签: c++ wxwidgets

我正在使用wxWIdgets显示文本框并使用

m_passwordText = new wxTextCtrl(m_panel, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()), wxTE_PASSWORD);

我想让这个文字有时可见,有时看不见(黑点)。有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

根据wxWidgets 3.0手册,您可以使用wxGTK但不能使用wxMSW(windows)。

对于GTK,要动态更改文本框样式,您可以执行以下操作:

textbox->SetWindowStyle(wxTE_PASSWORD);
textbox->Refresh();

在Windows上,看起来有一种后门方式来改变它,用这个:

bool hidepwd = true;
HWND hwnd = (HWND) textbox->GetHandle();
SendMessage(hwnd, EM_SETPASSWORDCHAR, hidepwd ? 0x25cf: 0, 0); // 0x25cf is ● character
textbox->Refresh();

有关在wxWidgets论坛上执行此操作的旧讨论:https://forums.wxwidgets.org/viewtopic.php?t=15093