mfc ondraw 예제

비트맵1 예제의 디스플레이 매핑 모드가 MM_TEXT인 경우 각 비트맵 픽셀은 표시 픽셀에 매핑되고 비트맵은 완벽하게 맞습니다. 매핑 모드가 MM_LOENGLISH인 경우 비트맵 크기는 0.54×0.96인치 또는 Windows 95의 경우 52×92 픽셀이며 GDI는 비트맵에 맞게 만들기 위해 약간의 크런치를 수행해야 합니다. 따라서 MM_LOENGLISH 매핑 모드에서비트맵이 좋지 않을 수 있습니다. CDC::SetStretchBltMode의 매개 변수 값을 사용 하 여 COLORONCOLOR 축소 된 비트 맵 을 더 멋지게 만들 것입니다. 예를 들어 노란색 배경이 있는 편집 컨트롤이 필요한 경우 CEdit에서 클래스 CYellowEdit을 파생하고 클래스 마법사를 사용하여 CYellowEdit에서 WM_CTLCOLOR 메시지를 매핑할 수 있습니다. ClassWizard는 메시지 이름이 반영되었음을 나타내기 위해 앞에 동일한 기호가 있는 메시지 이름을 나열합니다. 아래에 표시된 처리기 코드는 반영되지 않은 WM_CTLCOLOR 처리기와 거의 동일합니다. 멤버 변수 m_hYellowBrush는 컨트롤 클래스의 생성자에서 정의됩니다. 다음으로 장치 독립적인 비트맵(DBY)을 만드는 최신 프로그래밍 방식으로 졸업합니다. DIF를 사용하는 경우 색상과 프린터로 더 쉽게 시간을 보낼 수 있습니다. 경우에 따라 더 나은 성능을 얻을 수 있습니다. Win32 함수 CreateDIBSection()은 GDI 비트맵의 모든 기능과 결합된 DiB의 이점을 제공합니다. 마지막으로 MFC CBitmapButton 클래스를 사용하여 푸시 버튼에 비트맵을 넣는 방법을 배웁니다.

CBitmapButton을 사용하여 푸시 버튼에 비트 맵을 넣는 것은 DB와는 아무 상관이 없지만 예제없이 마스터하기 어려운 유용한 기술입니다. MYMFC26A 예제에서는 MM_LOENGLISH로 설정된 매핑 모드를 사용하여 스크롤 보기에 리소스 기반 비트맵을 표시합니다. 이 프로그램은 위에서 설명한 StretchBlt() 논리를 사용하지만 메모리 장치 컨텍스트와 비트맵은 뷰의 OnInitialUpdate() 멤버 함수에서 만들어지고 프로그램의 수명 동안 마지막으로 생성됩니다. 또한 프로그램은 CGdiObject 멤버 함수 GetObject()에 대한 호출을 통해 비트맵 크기를 읽므로 앞의 예제와 같이 하드 코딩된 값을 사용하지 않습니다. CFormView 클래스는 모덜리스 대화 상자 창의 많은 특성을 가지는 유용한 뷰 클래스입니다. CDialog에서 파생된 클래스와 마찬가지로 파생된 CFormView 클래스는 프레임 특성을 정의하고 컨트롤을 열거하는 대화 상자 리소스와 연결됩니다. CFormView 클래스는 모듈 5의 CDialog 예제에서 보았던 것과 동일한 대화 상자 데이터 교환 및 유효성 검사(DDX 및 DDV) 기능을 지원합니다.

Share on Facebook