mfc onsize 예제

성공하면 클립보드를 표시할 책임이 있는 창을 현재 식별합니다. 그렇지 않으면 NULL(예: 뷰어가 없는 경우). 창을 활성화하려면 먼저 창을 활성화해야 합니다. 예를 들어 응용 프로그램에서 모덜리스 대화 상자를 표시하고 기본 창을 사용하지 않도록 설정한 경우 대화 상자가 삭제되기 전에 주 창을 사용하도록 설정해야 합니다. 그렇지 않으면 다른 창에서 입력 포커스를 얻고 활성화됩니다. 자식 창이 비활성화된 경우 Windows에서 마우스 메시지를 받을 창을 결정하려고 할 때 무시됩니다. OnQueryOpen에서 CWnd는 활성화 또는 포커스 변경을 유발하는 작업(예: 대화 상자 만들기)을 수행해서는 안 됩니다. 당신은 (내가 일반적으로하는 것처럼) 두 개 이상의 파생 레벨이 당신의 유용한 컨트롤에 도착 (예를 들어, 나는 멋진 콤보 박스 클래스, CSmartCombo, 그리고 선택과 작은 아이콘을 표시 하나, CSmartCombo, 이는 CSmartCombo에서 파생되는, CComboBox에서 파생된 이 클래스는 지정할 수 없습니다. CImageCombo 컨트롤을 원한다면 CComboBox가 변수 유형이라고 말하고 직접 헤더 파일을 변경합니다. 바보,하지만 ClassWizard는 근처에 빗자루가있는 경우 물을 수행하기 위해 떠나고 싶은 마법사가 아닙니다 … 이 예제에서는 CWnd::SetTimer, CWnd::OnTimer 및 CWnd::KillTimer를 사용하여 WM_TIMER 메시지를 처리합니다.

첫 번째 타이머는 OnStartTimer에서 2초마다 기본 프레임 창에 WM_TIMER 메시지를 보내도록 설정됩니다. OnTimer 이벤트 처리기는 주 프레임 창에 대한 WM_TIMER 메시지를 처리합니다. 이 방법을 사용하면 PC 스피커가 2초마다 비프음이 울립니다. 두 번째 타이머는 3.75초마다 콜백 함수에 메시지를 보냅니다. OnStopTimer는 각 타이머 ID에 대한 CWnd::KillTimer를 호출하여 두 타이머를 중지합니다. 아래 스냅샷은 동작중의 기본 레이아웃 알고리즘을 보여줍니다. 깜박임을 최소화하기 위해 MFC 버전 (실제로 BS_GROUPBOX 스타일이있는 CButton)을 사용하는 대신 사용자 정의 그룹 박스 컨트롤을 제공했습니다. 이는 동적으로 생성된 컨트롤이 지원됨을 보여주는 예일 뿐입니다. “단계 크기” 옵션을 사용하면 레이아웃 수행 여부를 결정하기 위해 임계값을 픽셀 단위로 지정할 수 있습니다. 예를 들어 이 값을 5픽셀로 설정하면 대화 상자의 크기가 5픽셀 이상 크거나 작을 때만 레이아웃을 수행합니다. 이렇게 하면 모든 OnSize() 호출에서 자식 컨트롤의 크기 조정을 방지하고 “노치” 크기 조정 효과를 도입하는 비용으로 크기 조정 성능을 향상시킬 수 있습니다.

Shares

Posted on 2nd August 2019 in Uncategorised

Share the Story

About the Author

Back to Top
Shares