반응형

프로그래밍 기술 604

9. 접근성 평가 도구 만들기 - 4. WrapWinAPI 클래스 구현

9.2.2 WrapWinAPI 클래스 접근성 평가 도우미에서는 접근성 평가 프로세스를 선택하면 선택한 프로세스의 메인 창의 정보를 얻어올 것입니다. 이 과정에서 요소들의 화면 이미지를 캡쳐하는 기능을 구현하려고 하는데 평가 대상 창이 다른 창에 가려져 있을 수 있어서 초점을 변경하는 메서드를 제공하려 합니다. 여기서 반환하는 것은 초점을 변경하기 이전의 핸들입니다. 접근성 평가 도우미를 확장해서 구현하면 8장에서 래핑했던 Win32 API를 제공할 필요도 생길 수 있습니다. 여기에서는 Win32 API를 래핑하는 가장 간단한 방법을 이해하는 수준만 사용하였습니다. using System;using System.Runtime.InteropServices; namespace 예제_9_접근성_평가_도우미{ p..

9. 접근성 평가 도구 만들기 - 3. 속성과 컨트롤 패턴 열거형 정의하기

9. 2 접근성 평가 도우미 사용자 정의 형식 구현 접근성 평가 도우미를 구현하는 것은 사용자 정의 형식 구현을 먼저 설명한 이후에 사용자 정의 컨트롤, 폼 순으로 설명할게요. 여러분께서 순차적으로 구현하는 것은 폼부터 설명하는 것이 맞겠지만 분석하는 것은 내부부터 구현하는 것이 나을 것이라 생각합니다. 9.2.1 속성과 컨트롤 패턴 열거형 정의하기 접근성 요소의 기본 속성과 컨트롤 패턴은 다음처럼 열거형을 정의합시다. namespace 예제_9_접근성_평가_도우미{ public enum ENUM_UIProperty { NO_UIPROPERY=-1, EVALUATEVALUE, ACCELERATORKEY, ACCESSKEY, AUTOMATIONID, BOUNDINGRECTANGLE,CLASSNAME,CON..

9. 접근성 평가 도구 만들기 - 2. 사용자 정의 형식

9.1.2 사용자 정의 형식 접근성 평가 도우미에는 폼과 사용자 정의 컨트롤 외에도 접근성 평가를 위한 형식들을 정의해야 합니다. 여기서는 접근성 평가를 위한 형식 개체를 생성하고 관리하는 EvalManager 클래스를 정의합시다. 그리고 하나의 접근성 평가의 정보를 관리하는 AccEvalProject 클래스를 정의할게요. UI 자동화 요소는 EHAutoElem 형식으로 래핑하여 접근성 속성과 컨트롤 유형을 참조하기 쉽게 합시다. 그리고 평가 대상인 프로세스 정보는 EHProcess로 래핑할게요. 그리고 Win32 API를 래핑한 WrapWinAPI를 제공할 것입니다. 이 외에 UI 요소의 화면 정보를 캡쳐하고 Gray로 변환하는 일을 담당하는 ImageCapture 클래스를 제공할게요. 그리고 UI 자..

9. 접근성 평가 도구 만들기 - 1. 소개

9. 평가 도구 만들기 이번 장에서는 UI 자동화 기술을 이용하여 소프트웨어 접근성 평가할 때 응용 프로그램의 창의 UI 정보를 수집하여 편의성을 제공하는 도구를 만들어 봅시다. 여기서 만들 응용 프로그램의 이름은 접근성 평가 도우미라고 하겠습니다. 9. 1 접근성 평가 도우미 구조 접근성 평가 도우미의 화면 구성은 평가 프로젝트를 생성하고 평가 대상의 계층 구조와 요약 정보를 보여주는 MainForm과 평가 프로젝트 생성 과정에서 프로세스를 선택하는 폼, 실행 가능한 요소 항목을 보여주고 프로그램 방식으로 Invoke를 수행하게 하는 폼, 평가 대상을 이미지로 보여주는 폼, 특정 UI 요소의 사각 영역에 프로그램 방식의 하이라이트를 만들어주는 폼으로 구성할게요. [그림 9.1] 평가 도우미 폼 클래스 ..

[WPF] 5. 레이아웃과 Panel - 5.5 DockPanel

[WPF] 5. 레이아웃과 Panel - 5.5 DockPanel5.5 DockPanel DockPanel은 자식 UI를 좌측, 우측, 위, 아래로 붙여서 배치할 수 있습니다. 단순히 DockPanel의 자식 UI의 DockPanel.Dock 속성을 Left, Top, Right, Bottom을 지정하면 원하는 위치에 달라붙어요. 그리고 DockPanel의 LastChildFill 속성을 true로 하면 마지막 배치한 자식이 남아 있는 전체 공간에 채워집니다. 물론 false로 하면 필요한 공간만 차지합니다. [그림 5.16] DockPanel 사용 예제 실행 화면 먼저 WPF 응용 프로그램 프로젝트를 생성하세요.[그림 5.17] WPF 응용 프로그램 프로젝트 생성 DockPanel에 자식 요소를 배치할..

[WPF] 5. 레이아웃과 Panel - 5.4 WrapPanel

[WPF] 5. 레이아웃과 Panel - 5.4 WrapPanel 5.4 WrapPanel WrapPanel은 StackPanel과 매우 흡사합니다. StackPanel과 다른 점은 WrapPanel에서는 한 줄이 꽉차면 다음 줄로 넘어간는 것입니다. 흔히 폴더에서 파일 목록을 보는 것과 같습니다.[그림 5.13] WrapPanel 사용 예제 실행 화면 먼저 WPF 응용 프로그램 프로젝트를 생성하세요.[그림 5.14] WPF 응용 프로그램 프로젝트 생성 WrapPanel을 사용하면 [그림 5.13]처럼 한 줄이 꽉 차면 자동으로 다음 줄로 넘어갑니다. 사용 방법에 대해서는 StackPanel과 별 차이가 없기 때문에 설명을 생략할게요.

[WPF] 5. 레이아웃과 Panel - 5.3 StackPanel, 5.3.2 cs 소스에서 코드로 배치하기

5.3 StackPanel, 5.3.2 cs 소스 에서 코드로 배치하기5.3.2 cs에서 소스를 이용하여 배치하기 이번에는 cs 파일에서 직접 소스를 작성하여 배치하는 것에 대해 살펴봅시다. 실습할 배치 모습은 앞에서 xaml 태그를 이용한 것과 같습니다.[그림 5.11] StackPanel 사용 예제 실행 화면 먼저 WPF 응용 프로그램 프로젝트를 생성하세요.[그림 5.12] WPF 응용 프로그램 프로젝트 생성 먼저, xaml에 Window 개체 부분을 제외한 부분을 없애는 것부터 시작합시다. MainWindow.xaml.cs using System.Windows; using System.Windows.Controls; namespace StackPanel_실습___소스_코드로_배치 { /// /// ..

[WPF] 5. 레이아웃과 Panel - 5.3 StackPanel, 5.3.1 xaml 태그를 이용하여 배치

5.레이아웃과 Panel 5.3 StackPanel 5.3.1 xaml 태그를 이용하여 배치5.3 StackPanel StackPanel은 수평 혹은 수직 방향으로 순차적으로 자식 UI 개체를 배치할 때 사용이 됩니다. 만약, 보관된 개체의 공간이 이미 StackPanel에 꽉 찬다고 하더라도 다음 줄로 넘어가지 않고 한 줄로 배치가 됩니다. 이러한 StackPanel의 특징을 갖고 있어서 ScrollViewer내에 StackPanel을 배치하는 경우가 많이 발생합니다. 5.3.1 xaml에서 태그를 이용하여 배치하기 StackPanel은 Orientation 속성을 수평(Horizontal)로 배치를 할 것인지 수직(Vertical)으로 배치할 것인지를 결정할 수 있습니다. StackPanel에 자식 ..

[WPF] 5. 레이아웃과 Panel - 5.2 Canvas, 5.2.2 cs 소스에서 코드로 배치하기

5.레이아웃과 Panel - 5.2 Canvas, 5.2.2 cs 소스에서 코드로 배치하기5.2.2 cs 소스 파일에서 코드로 배치하기 이번에는 cs 파일에서 직접 소스를 작성하여 배치하는 것에 대해 살펴봅시다. 실제 WPF 프로그램을 작성할 때 UI 배치를 소스에서 작성하는 것은 자주 발생하는 작업은 아니지만 cs 파일에서 소스를 직접 작성해 보면 좀 더 명확하게 이해할 수 있어요. 실습할 배치 모습은 앞에서 xaml 태그를 이용한 것과 같습니다. [그림 5.7] Canvas 사용 예제 실행 화면 먼저 WPF 응용 프로그램 프로젝트를 생성하세요.[그림 5.8] WPF 응용 프로그램 프로젝트 생성 먼저, xaml 파일에 Window 요소 내부를 지우세요. Canvas 개체를 생성하는 코드부터 시작해야겠지..

[WPF] 5. 레이아웃과 Panel - 5.2 Canvas, 5.2.1 xaml 태그를 이용하여 배치

5. 레이아웃과 Panel - 5.2 Canvas, 5.2.1 xaml 태그를 이용하여 배치 5.2 Canvas Canvas는 Windows Form에서 UI를 배치하는 방법과 매우 흡사합니다. Canvas에서는 자식 UI를 Canvas 영역 내에 배치하고자 하는 상대 좌표를 지정할 수 있습니다. 그리고, Grid와 다르게 Canvas의 크기가 변한다 하더라도 자식 UI들의 크기나 Canvas내에 상대적 위치는 변하지 않습니다. 여러분들이 만들고자 하는 프로그램에서 창의 크기에 따라 UI요소들의 크기가 자동으로 조정이 되게 하고 싶지 않은 경우에 사용하세요. 5.2.1 xaml에서 태그를 이용하여 배치하기 Canvas를 사용할 경우에는 xaml 파일에 태그에 직접 작성하는 것 보다는 디자인 창에서 마우스..

반응형