학습
모듈
.NET MAUI XAML 페이지에서 레이아웃 사용자 지정 - Training
StackLayout 및 Grid를 사용하여 여러 디바이스에서 일관적인 사용자 인터페이스를 만듭니다.
이 브라우저는 더 이상 지원되지 않습니다.
최신 기능, 보안 업데이트, 기술 지원을 이용하려면 Microsoft Edge로 업그레이드하세요.
Visual Studio 2015의 MFC를 사용하면 사용자가 크기를 조정할 수 있는 대화 상자를 만들고 레이아웃이 크기 변경에 맞게 조정되는 방식을 제어할 수 있습니다. 예를 들어 항상 맨 아래에 유지되도록 대화 상자의 맨 아래 단추를 아래쪽 가장자리에 연결할 수 있습니다. 사용자가 대화 상자를 확장할 때 확장되도록 ListBox, EditBox 및 텍스트 필드와 같은 특정 컨트롤을 설정할 수도 있습니다.
사용자가 대화 상자의 크기를 조정하는 경우 대화 상자의 컨트롤 크기가 조정되거나 X 및 Y 방향으로 이동할 수 있습니다. 사용자가 대화 상자의 크기를 조정할 때 컨트롤의 크기 또는 위치 변경을 동적 레이아웃이라고 합니다. 예를 들어 다음은 크기가 조정되기 전의 대화 상자입니다.
크기를 조정하면 ListBox 영역이 증가하여 더 많은 항목을 표시하고 단추가 오른쪽 아래 모서리를 따라 이동합니다.
IDE의 리소스 편집기에서 각 컨트롤에 대한 세부 정보를 지정하여 동적 레이아웃을 제어하거나 특정 컨트롤의 개체에 액세스하고 CMFCDynamicLayout
속성을 설정하여 프로그래밍 방식으로 제어할 수 있습니다.
코드를 작성하지 않고 리소스 편집기를 사용하여 대화 상자에 대한 동적 레이아웃 동작을 설정할 수 있습니다.
MFC 프로젝트를 열고 대화 상자 편집기에서 작업할 대화 상자를 엽니다.
컨트롤을 선택하고 속성 창(클래스 뷰)에서 동적 레이아웃 속성을 설정합니다. 속성 창의 동적 레이아웃 섹션에는 이동 형식, 크기 조정 형식 및 해당 속성에 대해 선택한 값에 따라 컨트롤이 이동하거나 크기를 변경하는 크기를 정의하는 특정 속성이 포함됩니다. 이동 형식 은 대화 상자의 크기가 변경될 때 컨트롤을 이동하는 방법을 결정합니다 .크기 조정 형식 은 대화 상자의 크기가 변경될 때 컨트롤의 크기를 조정하는 방법을 결정합니다. 형식 및 크기 조정 형식 이동은 동적으로 변경하려는 차원에 따라 가로, 세로, 둘 다 또는 없음일 수 있습니다. 가로는 X 차원이고, 세로는 Y 방향입니다.
단추와 같은 컨트롤을 고정된 크기로 유지하고 오른쪽 하단에 유지하려는 경우 확인 또는 취소 단추의 일반적인 경우 크기 조정 유형을 없음으로 설정하고 이동 형식을 모두로 설정합니다. 이동 형식 아래의 X 이동 및 이동 Y 값의 경우 컨트롤이 오른쪽 아래 모서리에서 고정된 거리를 유지하도록 100%를 설정합니다.
또한 대화 상자가 확장될 때 확장하려는 컨트롤이 있다고 가정합니다. 일반적으로 사용자는 여러 줄로 된 편집 상자를 확장하여 텍스트 영역의 크기를 늘리기 위해 대화 상자를 확장하거나 더 많은 데이터를 보기 위해 목록 컨트롤을 확장할 수 있습니다. 이 경우 크기 조정 형식을 모두로 설정하고 이동 형식을 없음으로 설정합니다. 그런 다음 크기 조정 X 및 크기 조정 Y 값을 100으로 설정합니다.
컨트롤에 적합할 수 있는 다른 값으로 시험합니다. 예를 들어 한 줄 텍스트 상자가 있는 대화 상자에는 크기 조정 유형이 가로로만 설정되어 있을 수 있습니다.
이전 절차는 디자인 타임에 대화 상자에 대한 동적 레이아웃 속성을 지정하는 경우에 유용하지만 런타임에 동적 레이아웃을 제어하려는 경우 프로그래밍 방식으로 동적 레이아웃 속성을 설정할 수 있습니다.
대화 상자 클래스의 구현 코드에서 대화 상자에 대한 동적 레이아웃을 지정할 위치를 찾거나 만듭니다. 예를 들어 대화 상자에 AdjustLayout
과 같은 메서드를 추가하고 레이아웃을 변경해야 하는 위치에서 호출할 수 있습니다. 생성자에서 이 메서드를 처음 호출하거나 대화 상자를 변경한 후 호출할 수 있습니다.
대화 상자의 경우 클래스의 메서드인 GetDynamicLayout을 호출합니다CWnd
. GetDynamicLayout
는 CMFCDynamicLayout
개체에 대한 포인터를 반환합니다.
CMFCDynamicLayout* dynamicLayout = pDialog->GetDynamicLayout();
동적 동작을 추가하려는 첫 번째 컨트롤의 경우 동적 레이아웃 클래스의 정적 메서드를 사용하여 컨트롤을 조정하는 방식을 인코딩하는 Move설정 구조를 만듭니다. 먼저 적절한 정적 메서드인 CMFCDynamicLayout::MoveHorizontal, CMFCDynamicLayout::MoveVertical, CMFCDynamicLayout::MoveNone 또는 CMFCDynamicLayout::MoveHorizontalAndVertical을 선택하여 이 작업을 수행합니다. 이동의 가로 및/또는 세로 측면에 대한 백분율을 전달합니다. 이러한 정적 메서드는 모두 컨트롤의 이동 동작을 지정하는 데 사용할 수 있는 새로 만든 MoveSettings 개체를 반환합니다.
100은 대화 상자의 크기가 변경된 만큼 이동하는 것을 의미하며 컨트롤의 가장자리가 새 테두리에서 고정된 거리를 유지합니다.
MoveSettings moveSettings = CMFCDynamicLayout::MoveHorizontal(100);
Size설정 형식을 사용하는 크기 동작에 대해 동일한 작업을 수행합니다. 예를 들어 대화 상자의 크기가 조정될 때 컨트롤의 크기가 변경되지 않도록 지정하려면 다음 코드를 사용합니다.
SizeSettings sizeSettings = CMFCDynamicLayout::SizeNone();
CMFCDynamicLayout::AddItem 메서드를 사용하여 동적 레이아웃 관리자에 컨트롤을 추가합니다. 원하는 컨트롤을 지정하는 다양한 방법에 대한 두 가지 오버로드가 있습니다. 하나는 컨트롤의 창 핸들(HWND)을 사용하는 것이고 다른 하나는 컨트롤 ID를 사용하는 것입니다.
dynamicLayout->AddItem(hWndControl,
moveSettings,
sizeSettings);
이동하거나 크기를 조정해야 하는 각 컨트롤에 대해 반복합니다.
필요한 경우 CMFCDynamicLayout::HasItem 메서드를 사용하여 컨트롤이 동적 레이아웃 변경이 적용되는 컨트롤 목록에 이미 있는지 확인하거나 CMFCDynamicLayout::IsEmpty 메서드를 사용하여 변경될 수 있는 컨트롤이 있는지 확인할 수 있습니다.
대화 상자 레이아웃을 사용하도록 설정하려면 CWnd::EnableDynamicLayout 메서드를 호출합니다.
pDialog->EnableDynamicLayout(TRUE);
다음에 사용자가 대화 상자 의 크기를 조정할 때 CMFCDynamicLayout::Adjust 메서드가 호출되어 실제로 설정을 적용합니다.
동적 레이아웃을 사용하지 않도록 설정하려면 bEnabled 매개 변수에 대해 FALSE를 사용하여 CWnd::EnableDynamicLayout을 호출합니다.
pDialog->EnableDynamicLayout(FALSE);
CMFCDynamicLayout::MoveHorizontalAndVertical 메서드를 사용하여 다음 예제와 같이 동적 레이아웃 정보를 지정하는 관련 리소스 스크립트 파일(.rc 파일)에서 리소스 이름을 지정합니다.
dynamicLayout->LoadResource("IDD_DIALOG1");
명명된 리소스는 다음 예제와 같이 리소스 파일의 AFX_DIALOG_LAYOUT 항목 형식으로 레이아웃 정보를 포함하는 대화 상자를 참조해야 합니다.
/////////////////////////////////////////////////////////////////////////////
//
// AFX_DIALOG_LAYOUT
//
IDD_MFCAPPLICATION1_DIALOG AFX_DIALOG_LAYOUT
BEGIN
0x0000,
0x6400,
0x0028,
0x643c,
0x0028
END
IDD_DIALOG1 AFX_DIALOG_LAYOUT
BEGIN
0x0000,
0x6464,
0x0000,
0x6464,
0x0000,
0x0000,
0x6464,
0x0000,
0x0000
END
CMFCDynamicLayout 클래스
컨트롤 클래스
대화 상자 클래스
대화 상자 편집기
Visual C++ 2015의 MFC에 대한 동적 대화 상자 레이아웃
학습
모듈
.NET MAUI XAML 페이지에서 레이아웃 사용자 지정 - Training
StackLayout 및 Grid를 사용하여 여러 디바이스에서 일관적인 사용자 인터페이스를 만듭니다.