0

你怎么能做这样的事情SetWindowText( static_label, "I know this thing" + myString )

4

3 回答 3

6

这个问题与运算符重载或一般的重载无关。

如果您指的是如何SetWindowText (...)用于设置对话框窗口的标题和静态标签,那是因为它HWND是一个通用句柄。

另一方面,如果您询问如何连接文本,则可以使用 astd::string和调用.c_str (...)来获取 Win32 API 所需的以空字符结尾的字符串。

于 2013-09-02T20:45:42.093 回答
2
#include <atlstr.h>

CString a = "I know this thing ";
CString b = "foo";
SetWindowText(static_label, a + b);
于 2013-09-02T20:43:49.990 回答
1

以下是仅使用标准 C++ 库(当然还有 Windows API)的方法。CString不过,它比使用( ATL )稍微复杂一些。但是,如果您打算将代码作为开源发布,这种方法可能会更好,因为它允许其他人使用 Visual C++ 以外的编译器(例如MingW)来编译代码。

#include <string>
#include <Windows.h>

HWND static_label;

int main() {
    // ...
    std::string a = "Hello ";
    std::string b = "World!";
    std::string c = a + b;
    SetWindowText(static_label, c.c_str());
    // ...
    return 0;
}

另一种无需使用bc

#include <string>
#include <Windows.h>

HWND static_label;

int main() {
    // ...
    std::string a = "Hello ";
    SetWindowText(static_label, std::string(a+"World!").c_str());
    // ...
    return 0;
}
于 2013-09-04T23:47:23.423 回答