【问题标题】:How do I create a normal win32 edit control?如何创建普通的win32编辑控件?
【发布时间】:2009-06-10 23:28:44
【问题描述】:

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

【问题讨论】:

  • 当然,您需要检查您链接的 comctl32.dll 版本,但是 WS_EX_CLIENTEDGE 仍然适用。另请注意,如果您使用 MFC 生成表单,则更容易跟上 Common Control 更新。最后,您始终可以使用 Spy++ 实用程序来检查您希望检查的窗口的窗口样式。

标签: c winapi


【解决方案1】:

尝试使用 WS_EX_CLIENTEDGE。这将在典型情况下创建一个嵌入的 3-D 窗口边框。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我认为您的意思是“WS_EX_DLGMODALFRAME”风格。它使它看起来像老式的 3d 凸起类型外观。结合 'WS_BORDER' 使其看起来像控件周围的 3d 边框。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 2013-06-20
        • 2010-09-10
        • 2011-06-15
        • 2011-07-09
        相关资源
        最近更新 更多