如何创建正常的win32编辑控件?

时间:2009-06-10 23:28:45

标签: c winapi

我正在尝试创建一个带有常规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外观?

3 个答案:

答案 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的其余可用标志。

CreateWindowEx at MSDN

答案 1 :(得分:3)

他说得对,WS_EX_CLIENTEDGE会做3D边框。

答案 2 :(得分:1)

我认为你的意思是'WS_EX_DLGMODALFRAM E'风格。它使它看起来像旧式3d凸起型外观。与'WS_BORDER'结合使其看起来像控件周围的3d边框。