- 모달 다이얼로그 :
int DialogBox( HINSTANCE, LPCTSTR, HWND, DLGPROC );
DialogBox( HucareMenu.hInstance, MAKEINTRESOURCE( IDD_DIALOG ), hWnd, (DLGPROC) HucareDlgProc );
- 모달리스 다이얼로그 :
HWND CreateDialog( HINSTANCE, LPCTSTR, HWND, DLGPROC );
hDlg = CreateDialog( HucareMenu.hInstance, MAKEINTRESOURCE( IDD_DIALOG ), hWnd, (DLGPROC) HucareDlgProc );
HINSTANCE : 다이얼로그를 포함하는 실행파일의 인스턴스
LPCTSTR : 다이얼로그 박스 템플릿의 롱 포인터(?) 보통은 MAKEINTRESOURCE( 리소스아이디 ) 로 사용
HWND : 다이얼로그 박스를 소유한 윈도의 핸들
DLGPROC : 다이얼로그 박스 프로시저의 롱포인터
- 다이얼로그 박스의 프로시저는 리턴 타입이 BOOL 형이다.
TRUE : 다이얼로그에서 처리가 끝났음을 알린다.
FALSE : 다이얼로그에서 처리하지 못 했음을 알린다.
- 현재 해결하지 못 한 문제로
1. 다이얼로그에서는 WM_PAINT 메세지가 발생하지 않는다.
Invalidate... 류의 함수를 사용해서 강제로 WM_PAINT 메세지를 발생하라고 했지만
메세지는 발생하지 않았다. 왜 일까?
2. 키보드 입력 처리
ESC 키는 디폴트로 다이얼로그 박스의 종료를 나타낸다. 그래서인지 인식하지 않는다.
따라서 WM_CHAR나 WM_KEYDOWN을 적절히 사용하여 종료 키를 바꾸어 주어야 한다.
int DialogBox( HINSTANCE, LPCTSTR, HWND, DLGPROC );
DialogBox( HucareMenu.hInstance, MAKEINTRESOURCE( IDD_DIALOG ), hWnd, (DLGPROC) HucareDlgProc );
- 모달리스 다이얼로그 :
HWND CreateDialog( HINSTANCE, LPCTSTR, HWND, DLGPROC );
hDlg = CreateDialog( HucareMenu.hInstance, MAKEINTRESOURCE( IDD_DIALOG ), hWnd, (DLGPROC) HucareDlgProc );
HINSTANCE : 다이얼로그를 포함하는 실행파일의 인스턴스
LPCTSTR : 다이얼로그 박스 템플릿의 롱 포인터(?) 보통은 MAKEINTRESOURCE( 리소스아이디 ) 로 사용
HWND : 다이얼로그 박스를 소유한 윈도의 핸들
DLGPROC : 다이얼로그 박스 프로시저의 롱포인터
- 다이얼로그 박스의 프로시저는 리턴 타입이 BOOL 형이다.
TRUE : 다이얼로그에서 처리가 끝났음을 알린다.
FALSE : 다이얼로그에서 처리하지 못 했음을 알린다.
- 현재 해결하지 못 한 문제로
1. 다이얼로그에서는 WM_PAINT 메세지가 발생하지 않는다.
Invalidate... 류의 함수를 사용해서 강제로 WM_PAINT 메세지를 발생하라고 했지만
메세지는 발생하지 않았다. 왜 일까?
2. 키보드 입력 처리
ESC 키는 디폴트로 다이얼로그 박스의 종료를 나타낸다. 그래서인지 인식하지 않는다.
따라서 WM_CHAR나 WM_KEYDOWN을 적절히 사용하여 종료 키를 바꾸어 주어야 한다.
'프로그래밍 > 라이브러리' 카테고리의 다른 글
[Win32 API] WM_PAINT msg 처리 (0) | 2008.02.06 |
---|---|
[Win32 API] WM_PAINT msg를 사용하지 않고.. (0) | 2008.02.06 |
[MFC] 다이얼로그에서 키 입력 처리 (0) | 2008.02.06 |
[MFC] 기본 클래스에서 다른 클래스 참조 (예) (0) | 2008.02.06 |
[MFC] 기본 클래스끼리 상호 참조 (0) | 2008.02.06 |