1. 자식 윈도우를 만들기
1) 모든 윈도우는 윈도우 클래스로 부터 만든다.
2) 메시지 처리함수를 만들어야 한다.
3) WM_CREATE에서 자식윈도우를 생성해줘야 한다.
4) 처리하지 않은 메시지는 Defxxx 로 전달해줘야 한다.
4) UI 구축 : 눌린상태 라던가 올려져 있는 상태를 잘 표현 해야 한다.
5) 자식이 부모에게 사용자 정의 메시지를 보내면 WM_COMMAND( ID, 핸들, 통지코드 )를 읽어 처리가능
6) 부모는 자식에게 SendMessage 미리 정의된 메시지를 보내면 자식윈도우는 메시 지를 읽어 처리가능
7) 자식은 부모에게 WM_CTLCOLORBTN 을 보내 색상을 변경 할 수 있도록 한다. (HDC)wparam
2. DLL로 버튼 만들기
1) 클래스를 등록 한다. InitButton() <= 이것만 export 해준다.
2) 기본 프로시져 등록. BtnProc()
3) 프로시저에서 사용하는 함수 등록 Rect3d()
4) Dll을 import 해서 사용할 때는 InitButtonControl 로 윈도우클래스 등록한다.
5) 그 후, CreateWindowEx로 생성하면 된다.!!
1) 모든 윈도우는 윈도우 클래스로 부터 만든다.
2) 메시지 처리함수를 만들어야 한다.
3) WM_CREATE에서 자식윈도우를 생성해줘야 한다.
4) 처리하지 않은 메시지는 Defxxx 로 전달해줘야 한다.
4) UI 구축 : 눌린상태 라던가 올려져 있는 상태를 잘 표현 해야 한다.
5) 자식이 부모에게 사용자 정의 메시지를 보내면 WM_COMMAND( ID, 핸들, 통지코드 )를 읽어 처리가능
6) 부모는 자식에게 SendMessage 미리 정의된 메시지를 보내면 자식윈도우는 메시 지를 읽어 처리가능
7) 자식은 부모에게 WM_CTLCOLORBTN 을 보내 색상을 변경 할 수 있도록 한다. (HDC)wparam
2. DLL로 버튼 만들기
1) 클래스를 등록 한다. InitButton() <= 이것만 export 해준다.
2) 기본 프로시져 등록. BtnProc()
3) 프로시저에서 사용하는 함수 등록 Rect3d()
4) Dll을 import 해서 사용할 때는 InitButtonControl 로 윈도우클래스 등록한다.
5) 그 후, CreateWindowEx로 생성하면 된다.!!
3. 메뉴
1) 메뉴도 결국에는 윈도우이다. 여기서 발생하는 메세지는 WM_COMMAND에서 처리한다.
2) 메뉴에서 나오는 메시지도 자식윈도우가 부모에게 보내는 것 뿐이다.!!!
3) 그러므로 MENU도 윈도우로 따로 만들어서 다른 프로그램에 적용이 가능하다.
#32768 클래스 메뉴바??
#32770 DialogBox의 클래스 이름
4. 메시지 박스가 부모윈도우를 선택 하지 못하게 되는데 WM_TIMER가 메시지가 돌아가는 이유.
1) EnableWindow( hwnd, FALSE ); // 부모를 선택 하지 못하게 한다.
2) 메시지Q에서는 메시지를 계속 읽어오고 있으며 이를 DispatchMessage에서 자식윈도우인 메시지 박스로 메시지를 보내 주는 것 뿐이다.!!
1) 메뉴도 결국에는 윈도우이다. 여기서 발생하는 메세지는 WM_COMMAND에서 처리한다.
2) 메뉴에서 나오는 메시지도 자식윈도우가 부모에게 보내는 것 뿐이다.!!!
3) 그러므로 MENU도 윈도우로 따로 만들어서 다른 프로그램에 적용이 가능하다.
#32768 클래스 메뉴바??
#32770 DialogBox의 클래스 이름
4. 메시지 박스가 부모윈도우를 선택 하지 못하게 되는데 WM_TIMER가 메시지가 돌아가는 이유.
more..
1) EnableWindow( hwnd, FALSE ); // 부모를 선택 하지 못하게 한다.
2) 메시지Q에서는 메시지를 계속 읽어오고 있으며 이를 DispatchMessage에서 자식윈도우인 메시지 박스로 메시지를 보내 주는 것 뿐이다.!!
5. TranslateMessage
1) 쓰레드가 1개라면 MSG Q 도 한개 존재하게 된다.
2) GetMessage는 이 메세지Q에서 message를 얻어오고 DispatchMessag로 분배한다.
3) TranslateMessage에서 모든 자식 윈도우에 가는 메시지를 얻을 수 있다. (PreTranslateMessage)
6. Locale Input State
1) 마우스 RIT 는 핸들을 보낸다. ( 핸들을 MessageQ에 넣을 떄 결정하게 된다. )
2) 키보드는 그 순간에 포커스를 가지고 있는 곳에 message가 들어간다.( 핸들이 MSGQ에 나갈때 결정)
7. SubSystem
1) 실행시간에 WndProc를 가로채서 중간에 지정한 작업을 수행하도록 한다. Filter역할(바꿔치기)
2) EditProc = (WNDPROC)SetWindowLong( hEdit, GWL_WNDPROC, (LONG)foo ); // 핵심
more..
1) 쓰레드가 1개라면 MSG Q 도 한개 존재하게 된다.
2) GetMessage는 이 메세지Q에서 message를 얻어오고 DispatchMessag로 분배한다.
3) TranslateMessage에서 모든 자식 윈도우에 가는 메시지를 얻을 수 있다. (PreTranslateMessage)
6. Locale Input State
1) 마우스 RIT 는 핸들을 보낸다. ( 핸들을 MessageQ에 넣을 떄 결정하게 된다. )
2) 키보드는 그 순간에 포커스를 가지고 있는 곳에 message가 들어간다.( 핸들이 MSGQ에 나갈때 결정)
7. SubSystem
1) 실행시간에 WndProc를 가로채서 중간에 지정한 작업을 수행하도록 한다. Filter역할(바꿔치기)
2) EditProc = (WNDPROC)SetWindowLong( hEdit, GWL_WNDPROC, (LONG)foo ); // 핵심