使用WinAPI时连接字符串

时间:2013-09-02 20:34:46

标签: c++ winapi

你怎么做SetWindowText( static_label, "I know this thing" + myString )之类的东西?

3 个答案:

答案 0 :(得分:6)

此问题与运算符重载无关,或者与此有关的一般超载。

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

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

答案 1 :(得分:2)

#include <atlstr.h>

CString a = "I know this thing ";
CString b = "foo";
SetWindowText(static_label, a + b);

答案 2 :(得分:1)

以下是仅使用标准C ++库(显然是Windows API)的方法。这比使用CStringATL)要复杂一点。但是,如果您计划将代码作为开源发布,则此方法可能会更好,因为它允许其他人使用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;
}