로그인

검색

API/MFC
2012.08.02 21:17

모달리스 대화상자

조회 수 1513 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄

Modeless Dialog(모달리스/모델리스 대화상자)

 

1. Modal  Modeless

 

             Modal은 대화상자가 출력되고 있는 동안 프로그램의 모든 제어권을 독점하고 있어 대화상자가 종료되기

             전까지 다른 작업을 할 수가 없다.

             Modeless는 대화상자가 출력되고 있는 동안에도 다른 작업을 할 수가 있다.

 

2. 대화상자 출력시 차이점

 

구분

Modal

Modeless

생성

DoModal

Create

종료

EndDialog

DestroyWindow

인스턴스 선언

지역변수

동적할당

 

-       Modeless DoModal 함수로 생성된 것이 아니기 때문에 EndDialog를 사용할 수 없다.

-       IDOK 또는 IDCANCEL 같은 ID를 가진 버튼을 만들지 않는 것이 좋으며 꼭 이 버튼을
추가해야 할 경우에는 OnOK  OnCancel 같은 함수를 재정의하고 그 안에서 CDialog 클래스의
OnOK 
함수나 OnCancel 함수가 호출되지 않도록 해 주어야 한다.

 

3. Instance 생성

 

             Modeless 대화상자를 프로그램 전체에서 사용할 수도 있는데 그럴 경우 CMainFrame, CXXXApp, CXXXView, CXXXDoc

             등의 멤버로 CModelessDlg를 선언하고 필요할 경우 생성/해제 하는 방법을 사용해도 된다.

             필요할 때 생성하는 방법은 아래와 같다

 

        CModelessDlg *pDlg = new CModelessDlg;

        pDlg->Create(IDD_MODELESS);

        pDlg->ShowWindow(SW_SHOW);

 

4. 예제

 

1)     대화상자를 하나 만든다이때 버튼은 [OK] 버튼이나 [CANCEL] 버튼을 만들지 않고 IDC_CLOSE 라는 버튼을 만들었다.
 2. 번 참조

다른 컨트롤들을 넣고 싶다면 이것은 Modal 대화상자와 완전히 동일하므로 필요한 대로 Design 하면 된다.


dialog_design_xtelite.jpg?type=w2

 

그 다음 대화상자용 클래스를 만든다.

 

create_dialog_dialog_xtelite.jpg?type=w2

 

2)     대화상자를 생성하고 싶은 곳에 아래 코드를 추가한다프로그램 전체에 걸쳐 사용하고 싶은 경우는 멤버로
CModelessDlg *m_pDlg; 
를 선언해 놓으면 된다.

 

                     CModelessDlg *pDlg = new CModelessDlg;

                pDlg->Create(IDD_MODELESS);

                pDlg->ShowWindow(SW_SHOW);

 

3)     대화상자 클래스의 Close 버튼의 이벤트 핸들러를 만들어서 다음 코드를 추가한다이 코드는 대화상자를 닫게 만든다.

 

               void CModelessDlg::OnBnClickedClose()

               {

                       // TODO: Add your control notification handler code here

                       DestroyWindow();

               }

 

4)     대화상자를 만들면서 동적 메모리를 할당한 것이 있다면 이것도 해제시켜 주어야 하는데 이것은 PostNcDestroy()에서
해주면 된다. PostNcDestroy()는 대화상자가 완전히 소멸된 후에 호출되기 때문에 안전하게 삭제할 수 있다.

 

               void CModelessDlg::PostNcDestroy()

               {

                       // TODO: Add your specialized code here and/or call the base class

                       delete this;

 

                       //CDialog::PostNcDestroy();

               }


http://blog.naver.com/xtelite?Redirect=Log&logNo=50022212767


참고

http://www.lastking.net/142?category=1

http://blog.naver.com/nojarock?Redirect=Log&logNo=60005829046

?

  1. Programming 게시판 관련

    Date2014.11.01 CategoryTool/etc ByMoA Views5293
    read more
  2. Visual C++ 시리얼 통신(RS-232) 강좌 (2)

    Date2013.07.28 CategoryAPI/MFC ByMoA Views5359
    Read More
  3. Visual C++ 시리얼 통신(RS-232) 강좌 (1)

    Date2013.07.28 CategoryAPI/MFC ByMoA Views7119
    Read More
  4. DLL 이란

    Date2013.07.28 CategoryAPI/MFC ByMoA Views1402
    Read More
  5. UpdateData(TRUE) or UpdateData(FALSE) 구분

    Date2013.07.28 CategoryAPI/MFC ByMoA Views1033
    Read More
  6. InvalidateRect 함수, flag성 메세지

    Date2013.07.25 CategoryAPI/MFC ByMoA Views935
    Read More
  7. UpdateWindow 함수에 대하여..

    Date2013.07.25 CategoryAPI/MFC ByMoA Views1023
    Read More
  8. 다이얼로그 resize 시 child control의 그래픽 깨짐 해결

    Date2013.07.25 CategoryAPI/MFC ByMoA Views1909
    Read More
  9. Property Sheet의 버튼 속성 변경하기

    Date2013.07.25 CategoryAPI/MFC ByMoA Views1013
    Read More
  10. CPaneDialog 초기화 (OnInitDialog)

    Date2013.07.18 CategoryAPI/MFC ByMoA Views1508
    Read More
  11. CDockablePane 버튼 비활성화 문제

    Date2013.07.17 CategoryAPI/MFC ByMoA Views2044
    Read More
  12. CDockablePane 배경화면 회색으로 변경

    Date2013.07.11 CategoryAPI/MFC ByMoA Views1463
    Read More
  13. CPaneDialog의 context menu 안뜨게 하기

    Date2013.06.12 CategoryAPI/MFC ByMoA Views1219
    Read More
  14. 리스트 컨트롤 클릭 이벤트

    Date2013.06.12 CategoryAPI/MFC ByMoA Views1160
    Read More
  15. Which Font is the default for MFC Dialog Controls

    Date2013.06.12 CategoryAPI/MFC ByMoA Views823
    Read More
  16. 세마포어를 이용한 생산/소비자

    Date2012.08.31 CategoryAPI/MFC ByNaya Views1131
    Read More
  17. stdafx.h 사용 (미리 컴파일된 헤더)

    Date2012.08.13 CategoryAPI/MFC ByNaya Views1586
    Read More
  18. 윈도우 프로그램의 종료 메시지 순서

    Date2012.08.03 CategoryAPI/MFC ByNaya Views1360
    Read More
  19. Deploying a Visual C++ Application (배포 방법)

    Date2012.08.02 CategoryAPI/MFC ByNaya Views1583
    Read More
  20. MFC 클래스간 통신

    Date2012.08.02 CategoryAPI/MFC ByNaya Views2059
    Read More
  21. 모달리스 대화상자

    Date2012.08.02 CategoryAPI/MFC ByNaya Views1513
    Read More
Board Pagination Prev 1 2 3 4 Next
/ 4