SetFocus

원형

HWND SetFocus(HWND hWnd);

MFC 원형

CWnd* CWnd::SetFocus( );

인수

▶hWnd : 포커스를 가질 윈도우의 핸들. NULL일 경우 모든 키보드 입력을 무시한다.

리턴

이전에 포커스를 가지고 있던 윈도우의 핸들을 리턴한다. hWnd가 무효한 윈도우거나 같은 스레드에 있는 윈도우가 아닐 경우 리턴값은 NULL이 된다.

설명

포커스란 입력 촛점이며 포커스를 가진 윈도우에게 키보드 메시지가 전달된다. 한번에 하나의 윈도우만 포커스를 가질 수 있으며 보통 사용자가 컨트롤을 선택함으로써 포커스를 이동시키지만 프로그램이 이 함수로 포커스를 강제로 이동시킬 수도 있다.

이 함수는 hWnd 윈도우로 포커스를 강제로 이동시키는데 이 윈도우는 반드시 같은 스레드에 속해 있어야 한다. 포커스를 변경하기 전에 이전에 포커스를 가지고 있던 윈도우로 WM_KILLFOCUS 메시지를 보내주며 새로 퐄서를 받는 윈도우로 WM_SETFOCUS 메시지를 보내준다. 새로 포커스를 받는 윈도우와 그 부모 윈도우는 활성화된다. 보통 WM_CREATE에서 원하는 컨트롤에 포커스를 설정하기 위해 이 함수를 사용한다. 대화상자의 경우 WM_INITDIALOG 메시지를 받았을 때 이 함수를 호출하여 포커스를 이동시키는데 이 경우 반드시 FALSE를 리턴해 주어야 한다.

예제 1

다음 예제는 4개의 컨트롤을 생성하고 그 중 에디트 컨트롤에 초기 포커스를 준다.

HWND hB,hE,hL,hC;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	switch(iMessage) {
	case WM_CREATE:
		hB=CreateWindow("button","버튼",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			10,10,100,25,hWnd,(HMENU)0,g_hInst,NULL);
		hE=CreateWindow("edit",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER,
			120,10,200,25,hWnd,(HMENU)1,g_hInst,NULL);
		hL=CreateWindow("listbox",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
			LBS_NOTIFY,10,50,100,100,hWnd,(HMENU)2,g_hInst,NULL);
		hC=CreateWindow("combobox",NULL,WS_CHILD | WS_VISIBLE | CBS_DROPDOWN,
			120,50,100,200,hWnd,(HMENU)3,g_hInst,NULL);
		SetFocus(hE);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

참고함수

GetFocus : 현재 포커스를 가진 윈도우의 핸들을 조사해준다.

플랫폼

95이상

참조

 


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