컨트롤 표준화된 형태와 특성을 가진 윈도우 사용자로부터 입력을 받거나 정보를 보여주는 용도로 사용 자식 윈도우로만 존재한다. WM_PAINT 메시지를 받으면 자신을 화면에 그리는 작업을 스스로 하므로 컨트롤 갱신을 신경쓸 필요없다. 컨트롤도 윈도우이다. (일반 윈도우 기능을 모두 사용 가능) 컨트롤 → 부모 윈도우 (통지 메시지) 부모 윈도우 → 컨트롤 (컨트롤 메시지) - 통지 메시지 컨트롤은 대부분 WM_COMMAND 메시지를 부모윈도우에게 보내지만 경우에 따라서는 다른 메시지를 보내기도 한다. 사용자 행위로 인하여 컨트롤의 상태가 변화 되었음을 알리는 역활 드물게 메모리 부족 등으로 오류에 의해 발생되기도 한다. - 컨트롤 메시지 부모 윈도우가 컨트롤의 상태를 알아 내거나 변경시키기 위해 이 메시지..
사용자가 정의한 데이터 타입 직렬화 방법 1. MyData 클래스 추가 (사용자 정의 데이터) 반드시 CObject 직접 상속 받거나 CObject를 상속받은 다른 클래스를 상속받아야 한다. 그래야만 직렬화, DECLARE_SERIAL(), IMPLEMENT_SERIAL() 매크로 사용 가능해진다. (http://petra.tistory.com/883 참고) 2. DECLARE_SERIAL() 과 IMPLEMENT_SERIAL() 매크로를 아래 코드와 같이 추가한다. 3. 기본 생성자가 없으면 반드시 추가해야 한다. 4. Serialize() 재정의 한다. 이때 부모 클래스의 Serialize()를 먼저 호출해줘야 한다. 5. Doc 클래스에 MyClass 변수(m_data) 만들고, Doc의 Seria..
MFC 직렬화 MFC에서 직렬화는 CArchive 클래스를 이용한 I/O 기법을 말한다. Doc/View 구조에서는 직렬화 기능을 사용할 수 있도록 기본 코드를 생성해주므로 이를 이용하면 데이터를 저장하거나 읽어오는 코드를 편하게 작성할 수 있다. 마우스 왼쪽 버튼을 더블 클릭해서 변수값을 파일로 저장하고 우측버튼을 더블클릭하면 파일에서 변수로 읽어와 출력창에 표시하는 코드로 만들어진 파일 내용은 일반 텍스트가 아님을 알 수 있다. - CArchive 생성자 1 CArchive(CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL); cs pFile : CFile 객체의 주소 nMode : 저장/읽기, CArchive::store / CAr..
도큐먼트 템플릿 (Document Template) 도큐먼트, 프레임 윈도우, 뷰 클래스에 대한 정보를 유지하며 필요에 따라 해당 객체를 동적으로 생성하는 역활을 한다. 응용프로그램 객체(프로젝트명App객체)는 이런 도큐먼트 템플릿을 생성하고 관리하며 일반적으로 1개의 도큐먼트 템플릿을 사용하지만 경우에 따라서는 여러개의 도큐먼트 템플릿을 사용하는 경우도 있다. 각 응용프로그램 객체의 InitInstance() 에 도큐먼트 템플릿 객체를 생성하는 코드를 가진다. 1 2 3 4 5 6 7 8 9 10 11 12 13 BOOL CMFCApplication2App::InitInstance() { ... CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingle..