【发布时间】:2013-02-09 09:30:57
【问题描述】:
我有一个窗口,上面有几个控件,但只有编辑控件忽略了视觉样式。我试图追查原因,但到目前为止还没有运气。这是它的样子:
正如所见,按钮和列表框控件具有正确的视觉风格。但是,编辑控件不会。几天前,我在更改了一堆与它无关的代码后应用了正确的样式一次,所以我知道这是可能的。
注意事项:
- 我尝试调用
InitCommonControls和InitCommonControlsEx均未成功。 - 我已将 WS_EX_CLIENTEDGE 应用于编辑控件,并且始终打开了扩展样式,即使它之前工作时也是如此。
我已包含尽可能多的代码来帮助追踪此问题。
来自我的 TextBox 类(继承 Component):
protected:
virtual void OnRegistering(CreationParameters& createParams)
{
// this is passed in as the lpClassName parameter in
// CreateWindowEx() and the lpszClassName parameter in WNDCLASSEX
createParams.BaseClassName = WC_EDIT;
// passed as the dwStyle parameter in CreateWindowEx()
createParams.WindowStyles |= ES_AUTOHSCROLL | ES_AUTOVSCROLL;
// passed as the dwExStyle parameter in CreateWindowEx()
createParams.WindowExStyles |= WS_EX_CLIENTEDGE;
}
处理 WM_CTLCOLOREDIT 或 WM_ERASEBKGND 消息的问题与此有关吗?还是处理字体的问题? 还是别的什么?因为我现在 100% 没有想法。
【问题讨论】:
-
尝试删除代码中包含 WS_EX_CLIENTEDGE 的行,看看是否有帮助。
-
@mfc:我这样做了,它所做的只是完全删除了边框。 WS_EX_STATICEDGE 有点接近我想要的,但实际上我最终自己解决了这个问题。
-
如果问题只是没有边框,您可以通过将 WS_BORDER 添加到 WindowStyles 来添加它。