Win32 WinAPI EditBoX样式

时间:2013-11-15 23:51:11

标签: winapi visual-c++

如何使用Win32 WinAPI创建一个EditBox,使它看起来像你在一个VS设计器中放置一个editBox,例如Visual C#或VB(有一个漂亮的顶部边框等)?这是一张图片,展示了它在设计师中的表现以及它是如何形成的:

enter image description here

我试过这段代码:

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。我希望它看起来像第二个。

2 个答案:

答案 0 :(得分:4)

  

我一定错过了一些风格。我希望

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

答案 1 :(得分:-1)

要创建此类效果,您需要子类化Editbox控件并覆盖WM_PAINT和WM_ERASEBKGND消息。

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