본문 바로가기

예전/API

[API] 모달 과 모달리스의 차이 (modal modeless)



모달 , 모달리스


윈도우의 Form (형식)이나 Dialog (대화상자)를 모달 혹은 모달리스로 표시할 수 있다.


 

그렇다면 모달이 무엇일까?


모달


 간단히 말해 새 모달 창이 열렸을 땐 기존에 있던 창을 사용하지 못하는 방식이다. 예를 들어 어떠한 응용프로그램에서 에러 메시지가 뜬다고 가정하자. 그 메시지를 확인 또는 취소를 눌러야만 다음으로 진행이 가능하고, 그 메시지가 뜬 상태라면 뒤에 있는 창을 선택할 수 없다. 어렵게 말하면 어느 다이얼로그 창이 프로그램의 제어권을 독점해서 이 창이 종료되기전엔 다른 작업을 할 수 없는 것으로 다른 작업을 할 수 없다는 말은 현재 발생한 모달 다이얼로그의 부모 창을 의미 하며 다른 윈도우 창은 별개로 작업이 가능하다.


중요한 메시지를 표시하는 다이얼로그는 거의 모달로 나타낸다. Visual Studio의 정보 대화 상자나, API의 MessageBox는 사용할 수 있는 모달 형식의 한 예이다.


모달리스


 모달리스는 어느 하나의 다이얼로그 창이 있어도 프로그램 제어권을 독점하지 않으므로 다른 작업을 할 수 있는 것이다.

모달리스는 사용자가 순서에 관계 없이 액세스할 수 있기 때문에 사용자의 동작에 관계 없이 응용 프로그램의 상태를 일관성 있게 유지해야 한다. 그래서 프로그래밍하기가 더욱 어렵다.


  도구 창은 종종 모달리스 형식으로 표시되며, Visual Studio의 편집 메뉴에서 사용할 수 있는 찾기 대화 상자는 모달리스 대화 상자의 한 예다. 모달리스 형식은 자주 사용하는 명령이나 정보를 표시하는 데 사용한다.



 

Modal 

Modeless 

생성

 DoModal

 Create

종료 

 EndDialog

 DestroyWindow

객체 선언 시 

스택, 힙 가능 

동적할당만 가능하므로 힙만 가능 








'예전 > API' 카테고리의 다른 글

[API] IME에서 좌상단에 네모칸 없애기  (0) 2012.11.19
[API] 프로세스  (0) 2012.10.22
[API] LRESULT 와 HRESULT  (0) 2012.06.28
[API] Message Deadlocks ( 메시지 데드락 )  (0) 2012.06.27
[API] Virtual Key Value  (0) 2012.05.13