【问题标题】:Win32 WinAPI EditBoX stylesWin32 WinAPI EditBoX 样式
【发布时间】:2013-11-15 23:51:10
【问题描述】:

如何使用 Win32 WinAPI 创建一个 EditBox,使其看起来像在 Visual C# 或 VB 等 VS 设计器中放置一个编辑框(带有漂亮的上边框等)?以下是它的外观以及放入设计器时的样子:

我试过这段代码:

hWndTextBox = CreateWindow(L"EDIT", L"My default text",
        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL ,
        10,10,200,20,
        hWnd,
        (HMENU) ID_TEXTBOX,
        hInst,
        NULL);

但是那个看起来不像在某些 .NET IDE 设计器中创建的盒子。我在我的 Win32 应用程序中启用了视觉样式,并且我在 Win7 下使用 VS 2010。我希望它看起来像第二个。

【问题讨论】:

  • 你想要哪一个?最上面的还是最下面的?
  • 我想要底部的。我一定错过了一些风格。我希望。

标签: winapi visual-c++


【解决方案1】:

我一定错过了一些样式。希望

是的,您必须使用 CreateWindowEx(),以便您可以指定 WS_EX_CLIENTEDGE 而不是 WS_BORDER。并使用 WM_SETFONT 设置一个像样的 TrueType 字体而不是默认终端。

【讨论】:

    【解决方案2】:

    要创建这样的效果,您需要继承 Editbox 控件并覆盖 WM_PAINT 和 WM_ERASEBKGND 消息。

    有关子类化的信息,请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/ms633570(v=vs.85).aspx#subclassing_window

    【讨论】:

    • 我想通过 CreateWindow 一次性完成。
    • 您的目标是第一个平面样式还是第二个 client_edge 样式?
    • 好的,我相信你想要的是平的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多