IsDialogMessage 함수가 메시지를 처리하면 키보드 메시지를 확인하고 해당 대화 상자에 대한 선택 명령으로 변환합니다. 예를 들어 TAB 키는 다음 컨트롤 또는 컨트롤 그룹을 선택하고 DOWN ARROW 키는 그룹의 다음 컨트롤을 선택합니다. 프로그래밍 방식으로 컨트롤을 만드는 경우 CreateEx() 메서드의 nID 인수 또는 CreateEx() 메서드의 두 번째 버전으로 소수점 또는 육각형을 지정하여 식별자를 로컬로 설정할 수 있습니다. 다음은 예제입니다: 두 번째 예는 옵션 대화 상자(예: VS 2005의 옵션 대화 상자)입니다. 이러한 유형의 대화 상자는 일반적으로 왼쪽에 있는 트리 뷰와 오른쪽에 있는 UI 컨트롤 집합으로 구성됩니다. 트리 뷰의 선택 영역이 변경되면 오른쪽의 컨트롤 집합이 동적으로 변경됩니다. 이 UI 시나리오는 실제로 탭된 장치 창의 첫 번째 예제와 매우 유사합니다. 주요 차이점은 선택 또는 그룹화 메커니즘(예: 트리 뷰 선택 과 탭 선택)입니다. 컨트롤의 치수를 계산하는 방식에는 엄청난 차이가 있음을 이해하는 것이 중요합니다. 우리는 그것을 언급 하지 않은, 그리고 우리가 다르게 컨트롤을 처리 하지 않을 때문에 그것에 시간을 지출 하지 않습니다, 일반적인 컨트롤은 Windows 95와 함께 출시 하기 시작 하는 개체. 컨트롤의 왼쪽 테두리에서 오른쪽으로 의 폭을 계산하고 컨트롤의 높이는 컨트롤의 위쪽 테두리에서 아래로 계산됩니다. 다른 (이전) 컨트롤은 x 값에서 지정된 nWidth 값을 빼서 폭을 계산합니다. 즉, nWidth는 클라이언트 영역의 왼쪽 테두리에서 시작됩니다.
예를 들어 단추(클래스 이름 = “BUTTON”)를 만드는 경우 <= x값을 제공하는 경우 너비가 nil 또는 음수이기 때문에 컨트롤이 표시되지 않습니다. 다음 코드 관찰: 대화 상자 예제는 매우 기본적이며 UI를 동적으로 만드는 방법을 보여 주며 보여 주시면 됩니다. 그러나 사용 이 면 풀 메커니즘의 리소스 사용 이점을 보여 주기 위해 런타임 동안 컨테이너에서 CWndControl 인스턴스를 추가 하 고 제거 하는 방법이 필요 합니다. 컨트롤이 그룹으로 분할되고(한 번에 하나의 컨트롤 그룹만 표시할 수 있음) 그룹 선택을 위한 메커니즘(예: 트리 뷰 또는 탭 컨트롤 사용)을 사용하는 시나리오를 사용하는 것이 가장 좋습니다. 이를 위해 XML을 통해 정의 할 수있는 콘텐츠를 포함하는 "제어 창"을 구현하는 두 번째 클래스 계층을 추가했습니다. 이 클래스 집합의 주요 목표는 매우 구체적인 UI 시나리오에 대해 달성할 수 있는 리소스 절감 효과를 보여 주는 것입니다. 컨트롤 표면 클래스는 아래에 간략하게 설명되어 있습니다. 현재 위치는 현재 스크롤 범위에 종속된 상대 값입니다. 예를 들어 스크롤 범위가 50~100이고 스크롤 상자가 막대 중간에 있는 경우 현재 위치는 75입니다. 창 계층 구조와 관련이 없는 창 개체 간의 연결을 설정하는 것이 유용한 경우가 많습니다.
예를 들어 CToolBar는 상위 소유자가 아닌 소유자에게 알림을 보냅니다.