본문 바로가기

old drawer/C, C++, MFC

[MFC] GetDlgItem()

CWnd::GetDlgItem

 

1. 함수의 원형

CWnd *GetDlgItem(int nID) const;

 

2. 함수의 기능

이 함수는 일반적으로 대화상자에 생성된 컨트롤의 주소를 얻는데 사용됩니다. 왜냐하면, 대화상자는 대부분 리소스 편집기를 이용해서 사용할 컨트롤을 편집하고 DoModal 함수를 사용하여 컨트롤을 편집하고 DoModal 함수를 사용하여 대화상자가 생성되는 시점에, CDialog 클래스가 리소스 파일을 참조하여 컨트롤을 생성하기 때문에 기본적으로 대화상자 위에 생성된 컨트롤의 주소를 알 수가 없습니다.

 

프로그래머는 기본적으로 리소스 편집기에서 편집할 때 사용한 컨트롤의 번호만을 알고 있기 때문에 이 컨토를 번호를 이용하여 해당 컨트롤의 주소를 얻을 때, 이 함수를 사용합니다.

 

3. 함수의 매개변수에 대한 설명

주소를 알고 싶은 컨트롤 번호를 명시합니다. 예를 들어, 편집기에서 IDC_MY_EDIT라는 에디트 컨트롤을 만들었다면 아래와 같이 사용하시면 됩니다.

CWnd *p_wnd = GetDlgItem(IDC_MY_EDIT);

 

해당 컨트롤이 에디트 컨트롤임을 확신한다면 아래와 같이 사용하셔도 됩니다.

CEdit *p+edit1 = (CEdit *)GetDlgItem(IDC_MY_EDIT);

 

4. 소스 설명  

GetDlgItem(IDC_STATIC_WAITUSER)->GetWindowText(str); 

 

GetDlgitem은 해당 컨트롤의 Resource ID를 이용하여 Handle을 가져온다. 핸들을 통해 해당 컨트롤을 제어할 수 있다.

 

'->' 이 부분은 가져온 핸들 값을 이용하여 GetWindowText를 사용하는 것이다.

 

함수를 쓸 때 대부분 int ABC = SUM(1,2); 이렇게 변수를 받은 후에 그 변수를 사용한다. 그러나 변수 자체가 클래스인 경우 위와 같이 사용할 수도 있다.

 

위 줄은 IDC_ 리소스 ID를 통해 해당 리소스에 적힌 텍스트를 가져오는 부분이다.

[출처] CWnd::GetDlgItem|작성자 ksa3824