mfc cwnd 예제

무료 풀 개념의 이점을 얻을 수 있는 몇 가지 일반적인 UI 시나리오가 있습니다. 첫 번째 예는 운영자가 다양한 유형의 원격 장치를 제어할 수 있는 네트워크 관리 응용 프로그램입니다. 각 장치에는 거의 실시간으로 읽거나 설정할 수 있는 매개 변수 집합이 있습니다. 이러한 유형의 응용 프로그램에 대한 가능한 UI 모델 중 하나는 단일 장치 인스턴스를 제어하기 위해 하나의 MDI 자식 창을 열 수 있는 기본 MDI 셸입니다. 각 장치에는 수많은(수십 또는 수백 개의) 매개 변수가 있을 수 있으므로 각 MDI 자식(또는 장치) 창 내의 UI 컨트롤은 아래 그림과 같이 탭을 사용하여 논리적 그룹으로 구성됩니다. 다음 코드 예제에서는 CDialog 클래스에 동적 UI 지원을 추가 하는 방법을 보여 주며 있습니다. 이 예제에서는 대화 상자에 „Hello World!” 버튼을 추가하기만 하면 됩니다. 단추를 누르면 아래 스크린샷과 같이 메시지 상자가 표시됩니다. 상속 및 다형성 규칙에 따라 포인터를 CWnd로 선언하고 원하는 클래스로 초기화할 수도 있습니다. 다음은 컨트롤을 방금 추가한 경우 Visual C++가 기본 식별자를 할당하는 예입니다. 컨트롤이 정적이면 IDC_STATIC 식별자가 있습니다.

다른 모든 컨트롤에는 클래스 이름을 모방한 식별자가 추가됩니다. 예를 들어 IDC_EDIT1입니다. 동일한 종류의 다른 컨트롤을 추가하면 증분 번호가 있는 식별자가 받게 됩니다. 각 컨트롤에 대한 더 나은 아이디어를 만들려면 해당 컨트롤의 ID를 변경하여 보다 직관적으로 만들어야 합니다. 이렇게 하려면 컨트롤을 시각적으로 추가하는 경우 먼저 속성 창을 표시합니다: 프로그래밍 방식으로 컨트롤을 만드는 경우(임의로 선택된) 소수또는 헥사데피만 숫자를 nID 인수로 지정하여 식별자를 로컬로 설정할 수 있습니다. CreateEx() 메서드의 두 번째 버전()을 만듭니다. 다음은 컨트롤의 본문을 포함하지 않고 컨트롤의 테두리만 올리려면 WS_EX_CLIENTEDGE 및 WS_EX_DLGMODALFRAME 확장 스타일을 결합할 수 있습니다. 다음은 컨트롤의 위치와 치수를 동시에 지정하려면 Create()의 정사각형 인수 또는 CreateEx() 메서드의 두 번째 버전으로 RECT 또는 CRect 변수를 전달합니다. 다음은 예제입니다: bAccept 매개 변수를 TRUE로 설정한 DragAcceptFiles를 호출하는 창만 Windows 메시지 WM_DROPFILES를 처리할 수 있는 것으로 식별되었습니다.

예를 들어 MDI 응용 프로그램에서 CMDIFrameWnd 창 포인터가 DragAcceptFiles 함수 호출에 사용되는 경우 CMDIFrameWnd 창만 WM_DROPFILES 메시지를 가져옵니다. 이 메시지는 열려 있는 모든 CMDIChildWnd 창으로 전송되지 않습니다. CMDIChildWnd 창이 이 메시지를 받으려면 CMDIChildWnd 창 포인터를 사용하여 DragAcceptFiles를 호출해야 합니다. 부모 창이 올 때 사용자에게 컨트롤을 표시하려면 디자인 타임에 Visible 속성을 True로 설정합니다. 프로그래밍 방식으로 컨트롤을 만드는 경우 WS_VISIBLE 속성을 추가합니다. 다음은 Visible 속성을 True로 설정하지 않거나 WS_VISIBLE 속성을 추가하지 않으면 부모 창이 나타나면 컨트롤이 숨김(그러나 사용 가능한 경우)됩니다. 나중에 CWnd::ShowWindow() 메서드를 호출하여 컨트롤을 표시할 수 있습니다.