메시지 반사 (Message Reflection) 스스로 통지 메시지를 처리하는 독립적인 컨트롤 클래스를 제작할 수 있도록 한다. 부모 윈도우가 처리하지 않는 통비 메시지를 컨트롤 자신이 처리하는 개념이다. 이를 클래스 수준에서 본다면, 기존의 컨트롤 클래스로부터 새로운 클래스를 만들고 자신의 통지 메시지를 처리하도록 함수를 추가 하기만 하면 된다는 뜻이다. 메시지 반사를 사용하지 않을 경우, 컨트롤의 통지 메시지를 처리하는 코드를 매번 부모 윈도우쪽에서 작성해야 하므로 불필요한 코드 중복이 생기게 된다. 반면 메시지 반사를 사용할 경우, 컨트롤 클래스를 이용하여 컨트롤을 생성하기만 하면 부모 윈도우가 통지 메시지를 처리하지 않더라도 자신의 통지 메시지에 대해 스스로 반응하므로 매우 편리하며 코드 중복도..
- MFC 서브 클래싱 기존의 윈도우나 컨트롤의 형태 또는 동작을 변경할 수 있도록 한다. 윈도우(정확하게는 윈도우 프로시저)로 가는 메시지를 중간에서 붙잡아 처리하는 기법이다. 메시지 종류에 따라 처리한 후 원래의 윈도우 프로시저에게 전달해주거나 전달하지 않을 수도 있다. 이렇게 함으로써 원래의 윈도우 동작이 바뀌는 것이며, 이 기업은 일반적인 윈도우는 물론이고 컨트롤에도 적용할 수 있다. MFC 에서는 일반 윈도우나 컨트롤을 모두 클래스(객체) 수준에서 다루며 메시지 매핑 기법을 사용하여 메시지를 처리하므로 서브 클래싱을 쉽게 구현할 수 있다. 1. 기존의 클래스를 기반으로 새로운 윈도우나 컨트롤를 생성한다. 2. 메시지 핸들러를 재정의 하거나 새로운 메시지 핸들러를 추가하여 사용한다. 3. CWnd..
MFC 스크롤 바 화면의 일정 영역을 스크롤하거나 정해진 범위의 값을 변경 시키는 용도로 사용한다. 윈도우 스크롤 바와 달리 스크롤 바 컨트롤은 원하는 수 만큼 만들어 사용할 수 있으므로 훨씬 유용하다. 사용자가 스크롤 바를 조작하면 WM_HSCROLL, WM_VSCROLL 메시지가 발생한다. 이 메시지와 더불어 사용자의 구체적인 행위를 알 수 있도록 스크롤 바 코드(Scroll-Bar Code)도 같이 전달 된다. 1 2 void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); cs nSBCode : 아래 스크롤 바 코드표 참고 ..
MFC 코보 박스 컨트롤 편집 컨트롤과 리스트 박스 컨트롤을 결합한 것으로 새로운 항목을 사용자가 키보드로 입력하거나 목록에서 하나 또는 여러개의 항목을 선택할 수 있게 한다. 콤보 박스 컨트롤 스타일 의미 속성 대화상자 항목 CBS_AUTOHSCROLL = ES_AUTOHSCROLL Auto HScroll CBS_DISABLENOSCROLL = LBS_DISABLENOSCROLL Disable no scroll CBS_DROPDOWN 드랍다운 스타일 Type : Dropdown CBS_DROPDOWNLIST 드랍다운 리스트 스타일 Type : Drop List CBS_HASSTRINGS = ES_HASSTRINGS Has strings CBS_LOWERCASE = ES_LOWERCASE Lowercas..