Blog

Real Estate and Mortgage Blog

mfc domodal 예제

특수 단추의 메시지 처리 기능을 추가합니다. CMymfc7Dialog는 Windows의 도움을 받아 대부분의 대화 상자 관리를 수행하므로 많은 메시지 처리 기능이 필요하지 않습니다. 예를 들어 OK 단추(ClassWizard의 기본값)에 대한 IDOK를 지정하면 사용자가 단추를 클릭할 때 가상 CDialog 함수 OnOK()가 호출됩니다. 그러나 다른 단추의 경우 메시지 처리기가 필요합니다. 내가 첨부 한 프로젝트는 VC ++.NET 2003 파이널 베타를 사용하여 만들어졌으며 해당 버전이없는 모든 사람들에게 사과드립니다. 그러나 위에서 언급 한 단계를 따르는 것은 당신에게 몇 분 이상 걸리지 않아야합니다. 놀라운 것은이 버그가 MFC의 여러 버전을 통해 발견되지 않았다는 것입니다. 나는 VC ++ 6까지 다시 확인했으며 똑같은 문제도 있습니다. 내가 보는 한, 누군가가해야 할 일은 EndDialog API 호출에 대한 호출을 주석 달거나 삭제하는 것입니다. MFC 개발자는 래퍼 함수에서 네이티브 API 등가물을 호출하는 데 너무 많이 사용되었습니다 (예 : CWnd::Messagebox 내부에서 MessageBox API를 호출함) 누군가가 자동으로 있어야합니다. 생각하지 않고 그 줄에 입력하고 QA 사람은 또한이 오류를 간과해야합니다.

그리고 이 문제는 여러 모달 대화 창이 동일한 부모 창을 가진 다중 모달 창 아키텍처를 가지고 있는 프로그램에 매우 드문 상황이기 때문에 대부분 알려지지 않았습니다. 클래스 마법사를 사용하여 OnLButtonDown() 멤버 함수를 추가합니다. 이전 모듈의 예제에서 이 작업을 수행했습니다. CMymfc7View 클래스 이름을 선택하고 CMymfc7View 개체 ID를 클릭한 다음 WM_LBUTTONDOWN을 두 번 클릭하면 됩니다. 기본 클래스를 호출하지 않는 방법을 확인합니다 (다음 ::EndDialog (…) 호출되고 모든 노력이 낭비됩니다). OK/Cancel 단추 처리기 외부의 장소에서 모달 대화 상자를 종료하려면 다른 값(예: IDYES)을 반환할 수 있다는 점을 제외하고는 동일한 코드를 사용해야 합니다. 모든 아이콘. MFC 아이콘은 예제로 사용됩니다.

그림 컨트롤을 사용하여 리소스 스크립트에 아이콘 또는 비트맵이 정의된 경우 대화 상자에 아이콘 이나 비트맵을 표시할 수 있습니다. IDR_MAINFRAME으로 식별된 프로그램의 MFC 아이콘을 사용합니다. 유형 옵션을 아이콘으로 설정하고 이미지 옵션을 IDR_MAINFRAME으로 설정합니다. ID를 IDC_STATIC로 둡니다. 멤버 만들기 함수의 두 가지 형식은 템플릿 이름 또는 템플릿 ID 번호(예: IDD_DIALOG1)로 대화 상자 템플릿 리소스에 액세스하기 위해 제공됩니다. 생성자의 한 형식은 템플릿 이름으로 대화 상자 리소스에 대한 액세스를 제공합니다. 다른 생성자는 일반적으로 IDD_ 접두사(예: IDD_DIALOG1)를 사용하는 템플릿 ID 번호로 액세스를 제공합니다. – IDCANCEL – 버튼 “종료”(“취소”). – CMFCAppDlg – 응용 프로그램의 대화 창의 클래스; 둘 이상의 컨트롤을 정렬하려면 첫 번째 컨트롤을 클릭한 다음 정렬할 다른 컨트롤을 Shift-클릭하여 컨트롤을 선택합니다. 다음으로 대화 상자 편집기의 레이아웃 메뉴에서 정렬 하위 메뉴에서 정렬 명령(왼쪽, Horiz.Center, 오른쪽, 위쪽, Vert.Center 또는 아래쪽) 중 하나를 선택합니다. 콤보 상자의 드롭다운 부분의 크기를 설정하려면 상자의 화살표를 클릭하고 사각형 아래쪽의 가운데에서 아래로 드래그합니다.

4. 필드 “Resource:”는 “클래스 이름:”의 클래스에 해당하는 리소스 이름을 정의합니다. CDialog 개체는 대화 상자 템플릿과 CDialog 파생 클래스의 조합입니다.