190717-3 스크롤은 별도의 커맨드 메세지가 발생되지 않는다. void CScrollDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { switch (nSBCode) { case SB_LINELEFT: m_nR = max(0, m_nR - 1); // 구간설정 시 팁 max,min을 사용한다. break; case SB_LINERIGHT: m_nR = min(255, m_nR + 1); break; case SB_PAGELEFT: m_nR -= max(0, m_nR - 5); break; case SB_PAGERIGHT: m_nR += min(255, m_nR + 5); break; case SB_THUMBTRACK://잡고 드래그 m..
190717-2 모달리스 다이얼로그 메인 프레임에 모달리스 다이얼로그를 만들어보자. 클래스 선언 void CMainFrame::OnModalless() { // if 이미 객체가 있다면 포커스 else 없다면 생성 if (m_pDlg == NULL){ m_pDlg = new CScrollDlg; m_pDlg->Create(IDD_DIALOG2, this); // this : parent setting m_pDlg->ShowWindow(SW_SHOW); } else { m_pDlg->SetFocus(); } } - 생성 및 포커스 주기 이후에 종료처리도 해주어야한다. X버튼 클릭시 화면에서 사라지지만 완전히 지워진건 아니다. [WM_CLOSE] x버튼 클릭시 발생하는 핸들러 추가 [PostNcDestroy..
190717-1 컨트롤 베이스 리소스의 클래스를 만들어야한다.(자동) 다이얼로그 리소스 생성 -> 오른쪽 마우스 클래스 생성 (모달 다이얼로그를 띄우는 코드) 이벤트 처리기 추가 -> 헤더 include후 사용. void CCBDoc::OnModal() { CTestDlg dlg; // 객체 생성 if (dlg.DoModal() == IDOK) AfxMessageBox(_T("OK 누름")); else AfxMessageBox(_T("CANCEL 누름")); } - 버튼 클릭시 처리하기 - 모달리스 다이얼로그 : 모달 다이얼로그 보다는 복잡하다. (이는 잠시후에 해보겠다.) - 안에 있는 텍스트박스, 버튼의 부모는 다이얼로그다. 버튼 두번 클릭시 자동으로 가장 많이 사용되는 Clicked 처리기가 추가된..
190716-2 - 내일은 컨트롤과 윈도우 - 뷰는 Paint() 에서 그린다. Paint()에서는 document를 참고하여 그린다. 하나라도 수정이 된다면 SetModifiedFlag(true)를 하면된다. - 새로운 문서(ctrl+n 등)를 했을 때 1. 'DeleteContents()' 2. 'OnInitialUpdate()' -직렬화 객체 포메터 스트림(파일스트림, 네트워크스트림 등) IO 장치에 입출력을 한다. 프로그램을 껏다가 켯을 때 필요한 객체들(객체집합)만 복원하면된다. 복원할 때 어떤 데이터인지를 알려면 해당 정보를 모두 저장해야한다. (모든 정보가 필요하다) 그리고 복원시에 포멧을 보고 알아내어 데이터를 복원해야한다. 시리얼라이즈(직렬화) -> 저장을 할 때는 복원가능한 바이트배열로..
티스토리에서는 여러가지 플러그인을 제공하는데 그중 제가 자주쓰는 에버노트(Evernote) 노트 불러오기 플러그인이 갑자기 작동이 잘 안되는 문제가 발생했습니다. 위와 같이 티스토리의 글쓰기 에디터에서 추가메뉴 플러그인 Evernote 순서로 클릭을 해주게되면, 해당 플러그인은 사용할 수가 있습니다. 에버노트에 작성된 노트들 중에서 태그가 tistory 또는 티스토리로 되어있는 노트들의 목록이 뜨게됩니다. 이후 원하는 노트를 클릭하면 자동으로 편집기로 불러와지는 기능이라 에버노트에 작성하고 바로 글을 쓸 수 있는 아주 편리한 플러그인입니다. 그러나 저는 몇일 전부터 "데이터를 불러오는데 실패했습니다. 잠시 후 다시 시도해 주세요." 라는 메세지 오류가 뜨면서 제대로 작동이 안됩니다. 그래서 고객 센터에도..