Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何创建普通的win32编辑控件?_C_Winapi - Fatal编程技术网

C 如何创建普通的win32编辑控件?

C 如何创建普通的win32编辑控件?,c,winapi,C,Winapi,我试图创建一个编辑控件,它周围有常规的3D边框(无论如何,在经典的windows样式中),但它周围只有一个1px的黑色边框。这是我的CreateWindowEx调用: return CreateWindowEx(0, "EDIT", "E:\\bk", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT, 87, 81, 150, 17,

我试图创建一个编辑控件,它周围有常规的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\u BORDER
,那么它只是一个白框。你知道这里出了什么问题吗

更新
WS_EX_CLIENTEDGE
成功了。
我对清单文件一无所知,也不知道如何让窗口使用更现代的windows主题(例如XP),而不是笨重的3D边框。但是,当我了解了所有这些之后,
WS_exu_CLIENTEDGE
会让他们使用这些主题吗,还是会强化3D外观?

我想你指的是“
WS_exu DLGMODALFRAM
E”风格。它使它看起来像老式的3d凸起式外观。与“WS_BORDER”结合使用,使控件周围看起来像一个3d边框。

尝试使用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的其余可用标志,请参见以下链接


他是对的,WS_EX_CLIENTEDGE将进行3D边框处理。

当然,您需要检查链接所针对的comctl32.dll版本,但WS_EX_CLIENTEDGE仍将适用。还请注意,如果使用MFC生成表单,则更容易跟上常用控件的更新。最后,您可以始终使用Spy++实用程序检查要检查的窗口的窗口样式。