삽질의 현장/- 윈도우 API

#010_WIndow_API_다이얼로그 (2)

shovelman 2015. 9. 15. 14:44


안녕하세요 삽잡이입니다.

지난 시간에 모달 다이얼로그에 대해서 알아보는 시간을 가졌습니다.

이번 시간에도 이어서 달려보도록 하겠습니다.


DialogBox 함수를 통해 우리는 모달 다이어그램을 생성할 수 있었습니다.

하지만, 모달 다이어그램을 사용하기 위해서는 WndProc 함수에서 다이얼로그를 생성하고

다이얼로그 프로시저에서 다이얼로그를 소멸시켜야 된다는 사실에 대해 알게 되었습니다.


그렇다면 우리는 위의 말을 참고해서 이와 같은 코드를 작성할 수 있습니다.



이 조건문에 대해서 간략하게 설명 드리자면,

'IDOK 즉, 확인 버튼을 뜻하는 ID 값과 DialogBox의 반환 값이 같다면' 해당 조건문을 실행하겠다는 뜻입니다.


제가 지금 뜬금없이 x 소리를 하는 것이 아니라는 이유를 설명하기 전에 

EndDialog 함수를 다시 한번 살펴보도록 하겠습니다.



두번째 인자는 무엇을 눌러서 다이어그램이 종료되었는지를 알려주는 인자입니다.


자... 정리해보도록 하겠습니다.

DialogBox 함수는 EndDialog의 두번째 인수값을 반환하는 것을 설명한 것입니다.

뭘 눌렀길래 종료됬는지를 알게 된다면, 이에 따라 일 처리를 마저 할 수 있게 되기 때문입니다.



이처럼 반환 하는 값을 통해 조건문을 실행할 수 있습니다.


다음으로 Edit의 단 한자라도 변하게 되면 발생되는 이벤트를 알아보겠습니다.

지금까지 알아본 내용으로는 어떠한 이벤트가 발생했다는 사실은 알 수 있지만, 

떤 이벤트인지를 알 수 없습니다.

기존 상태에서 변화가 있을 때 그 사실을 알려주는 데 이는, 통지 코드에서 살펴볼 수 있습니다.


통지 코드는 wParam의 상위 2바이트에서 확인할 수 있습니다.



이와 같이 다이어로그에 발생하는 WM_COMMAND 메시지와 같이 전달되는

lParam, wParam 변수의 각각 상위, 하위 바이트에서

ID와 통지코드를 얻어와 이에 반응하는 결과들을 작성할 수 있습니다.


Edit 컨트롤에서 발생된 EN_CHANGE 메시지는 단 하나라도 변화가 되면

전달되는 메시지 입니다.



지금까지 모달 다이어로그에 대해서 알아봤습니다.

다음시간에 뵙겠습니다.

이상 삽잡이였습니다!