如何使用Win32 WinAPI创建一个EditBox,使它看起来像你在一个VS设计器中放置一个editBox,例如Visual C#或VB(有一个漂亮的顶部边框等)?这是一张图片,展示了它在设计师中的表现以及它是如何形成的:
我试过这段代码:
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。我希望它看起来像第二个。
答案 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