最近我在我的 MFC 程序中添加了 Common Controls 6.0 视觉样式,这使得所有控件看起来更加现代。当我动态创建一个 CEdit 按钮时,尽管它看起来像 Windows 95 中的旧 CEdit。除了 CEdit 之外,我动态创建的所有其他 ctrl 看起来都像较新的版本。所以,我想知道是否有其他人遇到过这个问题并知道任何解决方案?
这是我用来动态创建 CEdit 的代码。我已经应用了其他非动态 CEdit 控件具有的所有样式,但没有什么区别。
m_CEditCtrl.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, CRect(0, 0, 150, 100), this, IDC_VALUE_ID);
我曾尝试寻找这个问题的答案,但到目前为止只发现了另外两个 Stack Overflow 问题,而且它们都没有提供我正在寻找的答案。
这个问题有完全相同的问题,但没有答案,并且没有评论提供任何类似的解决方案。 MFC: dynamically created CEdit is not animated and does not change the appearance
另一个问题有一个解决方案,但它的解决方案不适用,因为我没有将 OnCtrlEdit 应用于此 CEdit。 Why is my edit control ignoring the applied visual styles?
最佳答案
这是感谢 user20716902 的答案。
为了动态获得漂亮的 CEdit 框,您需要使用 CreateEX 函数并使用 WS_EX_CLIENTEDGE 样式。
以下是创建看起来现代的 CEdit 框的示例代码。
m_CEditCtrl.CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""), WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL, CRect(0, 0, 0, 0), this, 1);
关于c++ - MFC:动态 CEdit ctrl 没有应用与非动态 CEdit ctrl 相同的视觉样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76443171/