본문 바로가기
프로그래밍/MFC (C++)

MFC ] 특정 컨트롤에 포커스 설정하기

by eteo 2023. 11. 6.

 

 

1. 다이얼로그 생성시 특정 컨트롤을 포커스된 상태로 두는법

 

리소스뷰에서 서식 - 탭 순서를 클릭하면 현재 설정된 탭순서(Tab키 눌렀을 때 이동되는 순서)가 표시되는데 컨트롤을 순서대로 클릭하여 탭순서를 재배치 할 수 있다.

 

포커스된 상태로 둘 컨트롤을 첫번째 순서로 설정하면 된다.

 

 

 

 

 

2. 코드에서 포커스 옮기기

 

컨트롤 객체가 있다면 바로 .SetFoucs() 함수를 사용하면 되지만 컨트롤 객체가 없는 다이얼로그 상의 컨트롤을 조작하려면 GetDlgItem() 함수를 사용하면 된다.

 

GetDlgItem() 함수는 컨트롤의 ID를 통해 다이얼 로그 상 컨트롤을 식별하는 데 사용되며 컨트롤의 핸들  CWnd*를 반환한다. 이 핸들을 사용해 컨트롤을 조작할 수 있다.

 

CWnd* GetDlgItem(int nID) const;


SetFoucs() 함수를 사용하면 원하는 컨트롤에 포커스를 설정할 수 있고, 포커스를 읽은 컨트롤에는 WM_KILLFOCUS 메시지가, 포커스를 얻은 컨트롤에는 WM_SETFOCUS 메시지가 발생한다.

 

 

GetDlgItem(IDC_MY_EDIT)->SetFocus();