Win32编辑控件默认文本
Posted
技术标签:
【中文标题】Win32编辑控件默认文本【英文标题】:Win32 edit control default text 【发布时间】:2017-07-09 17:40:04 【问题描述】:(注意:这可能更像是一个编程风格/架构问题)
创建主窗口(但尚未显示)时,我的窗口过程接收 WM_CREATE;这是我为编辑控件调用 CreateWindow 的地方:
case WM_CREATE:
hwndEdit = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("edit"), L"Default text",
WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL,
10, 10, 150, 24, hWnd, (HMENU)ID_EDIT,
hInst, NULL);
break;
正如预期的那样,“默认文本”显示在编辑控件中。
我知道我也可以使用 SendMessage 或 SetWindowText。
所以,我有三个 API 调用来做我想做的事 - 我应该使用哪一个?
最好, 克里斯
【问题讨论】:
如果目标窗口归当前进程所有,SetWindowText 会导致向指定窗口或控件发送 WM_SETTEXT 消息 - 所以 SetWindowText在您的情况下,它只是 WM_SETTEXT 的薄壳。如果在窗口创建时已知文本 - 最好只是在调用 CreateWindowEx 中设置它 - 还有哪些 SendMessage 或 SetWindowText ? 我正在考虑其中一种方法可能产生的不良副作用,但我还不知道。如果它们同样可以使用,那么我将坚持我的解决方案。 如果有可以通过单个 API 调用实现的解决方案,为什么还要寻找其他解决方案? 【参考方案1】:如果在CreateWindowEx
中设置文字方便又方便,那就这样做吧。
如果由于某种原因不方便,请使用SetWindowText
。
在这种情况下,您可能不想使用L"Default Text"
作为CreateWindowEx
中的默认文本。
由于lpWindowName
是可选的,您可以通过NULL
将其留空。
或者,您可以使用对您的应用程序更有意义的东西,例如L"(Loading...)"
。
【讨论】:
以上是关于Win32编辑控件默认文本的主要内容,如果未能解决你的问题,请参考以下文章
Win32 编辑控件滚动条在 Windows 10 中不起作用