2013-09-02 4 views
0

SetWindowText(static_label, "I know this thing" + myString)과 같은 작업을 수행하려면 어떻게해야합니까?WinAPI를 사용할 때 문자열 연결

+0

c 당신이 static_label''무슨 뜻인지 명확히하십시오 사용하지 않고

또 다른 방법 . –

+1

질문에 [SetWindowText()'문서] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633546(v=vs.85))로 대답하지 않은 것이 있습니까? .aspx)? 당신은'SetWindowText()'에 대한 호출 중에 * 두 문자열을 연결하는 방법을 묻고 있습니까? (실제 호출은 완전히 무의미합니다)? – WhozCraig

+0

또한 어떤 연산자 오버로딩이 함수 호출과 관련이 있는지 분명하지 않습니다. – Jon

답변

2
#include <atlstr.h> 

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

'CString'은 MFC를 필요로하지 않습니까? @ Psychoman은 MFC를 사용하고 있는지 여부를 말하지 않았습니다. –

+0

CString에는 MFC가 필요하지 않습니다. –

+0

MFC를 사용하지 않고 CString을 사용하여이 작업을 수행 할 수 있다면, 내가 원하는 것입니다. – Psychoman

6

이 질문은 일반적으로 연산자 오버로딩이나 오버로드와 관련이 없습니다.

HWND이 제네릭 핸들이기 때문에 SetWindowText (...)을 사용하여 대화 상자 제목과 정적 레이블을 설정하는 방법을 언급 한 것입니다.

텍스트를 연결하는 방법을 묻는 경우 std::string을 사용하고 .c_str (...)을 호출하면 Win32 API에서 원하는 null로 끝나는 문자열을 얻을 수 있습니다.

+0

당신도'c_str()'을 호출하고 Win32 버전을 호출하는'SetWindowText'의 오버로드를 정의 할 수 있습니다. –

1

다음은 표준 C++ 라이브러리 (및 분명히 Windows API) 만 사용하는 방법입니다. 그래도 CString (ATL)을 사용하는 것보다 조금 더 복잡합니다. 그러나 오픈 소스로 코드를 공개하려는 경우 다른 사람이 Visual C++ 이외의 컴파일러 (예 : MingW)를 사용하여 코드를 컴파일 할 수 있으므로이 방법이 더 좋습니다. b 또는

#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; 
}