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 中设置它 - 还有哪些 SendMessageSetWindowText 我正在考虑其中一种方法可能产生的不良副作用,但我还不知道。如果它们同样可以使用,那么我将坚持我的解决方案。 如果有可以通过单个 API 调用实现的解决方案,为什么还要寻找其他解决方案? 【参考方案1】:

如果在CreateWindowEx中设置文字方便又方便,那就这样做吧。

如果由于某种原因不方便,请使用SetWindowText

在这种情况下,您可能不想使用L"Default Text" 作为CreateWindowEx 中的默认文本。

由于lpWindowName 是可选的,您可以通过NULL 将其留空。

或者,您可以使用对您的应用程序更有意义的东西,例如L"(Loading...)"

【讨论】:

以上是关于Win32编辑控件默认文本的主要内容,如果未能解决你的问题,请参考以下文章

win32编辑框设置提示文字

编辑控件不会获得焦点! win32 c++

自定义编辑控件win32

Win32 编辑控件滚动条在 Windows 10 中不起作用

win10文本文档默认为啥是UTF-8,而且改变不了编码格式

为啥我的编辑控件在没有使用 MFC 的 win32 c++ 应用程序中看起来很奇怪?