본문 바로가기
반응형

C & C++/MFC 컨트롤199

[Dialog] Modeless Dialog(모달리스/모델리스 대화상자) Modeless Dialog(모달리스/모델리스 대화상자) 1. Modal 과 Modeless Modal은 대화상자가 출력되고 있는 동안 프로그램의 모든 제어권을 독점하고 있어 대화상자가 종료되기 전까지 다른 작업을 할 수가 없다. Modeless는 대화상자가 출력되고 있는 동안에도 다른 작업을 할 수가 있다. 2. 대화상자 출력시 차이점 구분 Modal Modeless 생성 DoModal Create 종료 EndDialog DestroyWindow 인스턴스 선언 지역변수 동적할당 - Modeless는 DoModal 함수로 생성된 것이 아니기 때문에 EndDialog를 사용할 수 없다. - IDOK 또는 IDCANCEL 같은 ID를 가진 버튼을 만들지 않는 것이 좋으며 꼭 이 버튼을 추가해야 할 경우에는 .. 2011. 2. 11.
[Etc] MFC 프로그램 중복방지 프로그램 중복방지에는 여러가지 방법이 있다. 아래의 링크를 참조 http://www.morni.net/bbs/zboard.php?id=VC&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=19&PHPSESSID=aab0b5b8cb4720e74b9b39f212c20629 그리고 명심해야할 것은 메인 다이얼로그 창 생성 전에 프로그램 실행확인 루틴이 먼저 와야한다는 것 CWnd* pWnd = NULL; pWnd = CWnd::FindWindow(NULL,_T("프로그램 메인다이얼로그 창 이름")); if (pWnd) { pWnd->ShowWindow(SW_SHOW); pWnd->SetForegroundWindow(); r.. 2011. 2. 11.
[Dialog] 모달리스 다이얼로그의 메모리 해제 모달리스 다이얼로그의 메모리 해제 new를 통해서 할당한 모달리스 대화상자의 경우.. CloseWindow.. DestoryWindows()를 호출한다고 해서.. 힙에 할당된 대화상자 메모리까지 해제가 되진 않습니다. 해제하는 방법은 PostNcDestroy() 함수를 모달리스 대화상자 클래스에서 오버라이딩해서 함수를 정의해주고, delete this; 를 넣어주면 됩니다. 이 간단한 팁을 모르고 헤매고 있을지 모르는 분들에게 도움이 되었기를 바랍니다. 2011. 1. 26.
[Event] 여러개의 파일을 선택 AcceptFiles의 사용 * 임무 * MFC에서 파일정보를 드래그 & 드롭으로 가져오려고 한다. 그런데 한개가 아니고 여러개의 파일을 함께 가져오는 경우는 어떻게 할까? *해결책 * 다음은 다이얼로그에서 AcceptFiles 속성을 사용할때의 예다. 먼저 클래스 위저드에서 DropFiles의 이벤트 핸들러를 생성시켜준다. void CMyDlg::OnDropFiles(HDROP hDropInfo) { char szFullFilePath[_MAX_PATH]; int TotalFiles = ::DragQueryFile(hDropInfo, 0xFFFFFFFF, szFullFilePath, _MAX_PATH); // 이제 갯수를 알 수 있다. for (i=0; i 2011. 1. 12.
[Dialog] 공용 대화상자 (Common Dialog) 사용법 * 임무 * MFC 어플리케이션에서 파일 열기 또는 저장을 하고 싶은데 파일을 선택하는 다이얼로그를 사용하고 싶다. * 해결책 * MFC가 제공하는 공용 다이얼로그 중 파일 다이얼로그를 사용해 본다. CFileDialog를 사용하면 되며 메뉴 및 버튼 이벤트 핸들러에 다음과 같이 코드를 추가한다. // 공용 대화상자 CFileDialog FileDlg(FALSE, "TXT","*.TXT", OFN_OVERWRITEPROMPT, "TXT 파일(*.TXT)|*.TXT|DAT 파일(*.DAT)|*.DAT"); // 선언 if (FileDlg.DoModal() == IDOK) { // 선택한 파일의 이름은 FileDlg.GetPathName(); 에서 알아낼 수 있다 CString Filename = FileD.. 2011. 1. 12.
[Radio] 라디오 버튼 그룹지정 * 임무 * MFC에서 다이얼로그를 만들어서 사용하는 경우, 라디오 버튼을 사용하는 경우가 있다. 이때 모든 라디오 버튼을 한가지 용도로만 사용하면 좋겠지만 아쉽게도 몇개의 그룹으로 나누어서 사용해야 하는 경우가 있다. MFC는 친절하게 라디오 버튼 하나를 누르면 다른 라디오 버튼에서 선택표시(가운데 찍히는 점)를 빼앗아 준다. 그룹이 여러개인 경우, 이렇게 되면 다른 그룹의 선택표시까지 빼앗아 버려 과잉 친절이 된다. 예) 하나의 다이얼로그에서 색상과 크기를 라디오 버튼으로 받는 경우를 생각해 보자. 이렇게 되면 색상을 입력받는 라디오 버튼들과 크기를 입력받는 라디오 버튼들로 2개의 그룹이 생긴다. 원래대로라면 크기이던 색상이던 하나의 버튼을 선택하면 나머지 그룹의 버튼에서도 선택점이 사라져 불편하다... 2011. 1. 12.
반응형