프로그램/C++

Dialog 모달리스 사용하기

네오류이 2021. 1. 13. 17:04
728x90
반응형

오늘은 C++에서 모달(Modal), 모달리스(Modaless) 대해 설명하고자 합니다.

 

모달 은 잘 아시겠지만 DoModal() 함수를 이용하는 것이고, 모달리스 는 create을 통해 생성 후 필요할 때 사용하는 것입니다.

 

모달 은 DoModal() 만 호출하면 사용할 수 있기 때문에 생략을 하고요, 모달리스 에 대해 생성, 파괴 에 대해 설명드리고자 합니다,

 

* 소스코드 (Header)

#include "AaaWnd.h"

 

CAaaWnd      *mp_aaa_wnd;

 

 

* 소스코드 (CPP)

 

  // 생성

mp_aaa_wnd = NULL;

mp_aaa_wnd = new CAaaWnd();

if(mp_aaa_wnd){

mp_aaa_wnd->Create(IDD_WINDOW_DLG, this);

mp_aaa_wnd->MoveWindow(CRect(0,0,500,500), TRUE);

mp_aaa_wnd->ShowWindow(SW_HIDE);

 

}

 

  // 파괴

if(mp_aaa_wnd&& ::IsWindow(mp_aaa_wnd->m_hWnd)){

mp_aaa_wnd->DestroyWindow();

delete mp_aaa_wnd; mp_aaa_wnd= NULL;

}

 

  // 필요한 곳에서 띄운다.

  mp_aaa_wnd->ShowWindow(SW_NORMAL);  // 보이게 한다.

 

위 소스에서 보면 생성자 또는 initdialog 에서 생성하고 destory 에서 파괴를 하면 됩니다.

 

필요하곳에서 ShowWindow(SW_NORMAL) 로 보이게 하면 모달리스는 완성이 됩니다.

보이게 하기 전에 필요한 인자를 던져놓아도 되고, 화면크기 위치를 MoveWIndow 나 SetWindowPos 로 위치를 잡고 보이게 해도 됩니다.

 

단 저 창은 리소스에 dlg 가 있어야 가능합니다, 위 예로는 IDD_WINDOW_DLG 란 리소스가 있어야 합니다.

 

 

#c++#Create#IDD#modal#Modaless#모달리스

728x90
반응형