我正在尝试创建一个带有常规3D边框的编辑控件(无论如何都采用经典的Windows风格),但它周围只有1px的黑色边框。这是我的CreateWindowEx
电话:
return CreateWindowEx(0, "EDIT", "E:\\bk",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT,
87, 81, 150, 17,
main_window.hwnd,
(HMENU)5, hInstance, NULL);
如果我排除WS_BORDER
,那么它只是一个白框。关于这里有什么问题的任何想法?
WS_EX_CLIENTEDGE
完成了这个伎俩。
我对清单文件一无所知,或者如何使窗口使用更现代的Windows主题(例如XP),而不是粗糙的3D边框。但是,当我了解所有这些内容时,WS_EX_CLIENTEDGE
会让他们使用这些主题,还是会强制执行3D外观?
答案 0 :(得分:7)
尝试使用WS_EX_CLIENTEDGE。这将在典型情况下创建一个插入的三维窗口边框。
return CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "E:\\bk",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT,
87, 81, 150, 17,
main_window.hwnd,
(HMENU)5, hInstance, NULL);
另请参阅以下链接,了解CreateWindowEx的其余可用标志。
答案 1 :(得分:3)
他说得对,WS_EX_CLIENTEDGE会做3D边框。
答案 2 :(得分:1)
我认为你的意思是'WS_EX_DLGMODALFRAM
E'风格。它使它看起来像旧式3d凸起型外观。与'WS_BORDER'结合使其看起来像控件周围的3d边框。