WM_SETTEXT

인수

lParam : 설정하고자 하는 텍스트이며 널 종료 문자열이다.

설명

윈도우의 텍스트를 변경한다. 윈도우의 종류에 따라 윈도우 텍스트 종류는 달라지는데 에디트는 편집중인 문자열, 버튼은 이름, 일반 윈도우는 타이틀 바의 캡션이 윈도우 텍스트가 된다. 콤보 박스로 이 메시지를 보낸 경우 콤보의 에디트 컨트롤 내용만 바뀔 뿐 리스트 박스의 선택 상태가 변경되는 것은 아니다. 콤보의 선택 항목을 변경하려면 CB_SELECTSTRING 메시지를 보내 주어야 한다.

같은 프로세스에 속한 윈도우는 이 메시지를 보내는 대신 SetWindowText 함수를 대신 사용할 수도 있다. 다른 프로세스에 속한 윈도우의 텍스트를 변경할 때는 WM_SETTEXT 메시지를 보내야 한다.

리턴

성공한 경우 TRUE를 리턴한다. 만약 lParam의 텍스트가 너무 길어 윈도우의 텍스트로 지정할 수 없다면 에러 코드가 리턴되는데 컨트롤에 따라 에러의 종류가 다르다. 에디트는 FALSE를 리턴하며 리스트 박스는 LB_ERRSPACE, 콤보 박스는 CB_ERRSPACE를 리턴한다. 에디트 컨트롤을 가지지 않는 콤보 박스로 이 메시지를 보내면 CB_ERR 에러 코드가 리턴된다.

예제

예제 1

다음 예제는 마우스 왼쪽 버튼을 누르면 윈도우의 타이틀 바를 변경한다. WM_SETTEXT 메시지를 보낼 수도 있고 SetWindowText 함수를 사용할 수도 있다.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR Mes[]="타이틀을 변경하기 위해 마우스 왼쪽 버튼을 누르십시오";

	switch(iMessage) {
	case WM_LBUTTONDOWN:
		SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)"새 텍스트");
		//SetWindowText(hWnd,"새 텍스트");
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

타이틀 바를 변경하면 즉시 반영되기 때문에 디버깅 출력용으로도 종종 사용된다.

플랫폼

95이상

참조

 


written by http://www.winapi.co.kr