programing150 다이알 로그 활성화 확인 void Dialog::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) { __super::OnActivate(nState, pWndOther, bMinimized); // TODO: 여기에 메시지 처리기 코드를 추가합니다. switch (nState) { case WA_INACTIVE:// 비 활성 했을 때 break; case WA_ACTIVE:// 활성 했을 때(마우스 클릭 제외) break; case WA_CLICKACTIVE:// 마우스 클릭으로 활성 했을 때 break; } cf. api에서는 LOWORD(wParam)로 알아냄 cf. focus는 다이알로그 안 컨트롤에 대한 것으로 의미하므로 activate와 다르다. 2017. 5. 22. 간단한 Popup Menu 만들기 CMenu cMenu; // 팝업 메뉴 생성cMenu = CreatePopupMenu(); // 팝업 메뉴 항목 추가cMenu.AppendMenu(MF_STRING, 메시지, L"팝업 항목 내용"); // 팝업 메뉴 출력cMenu.TrackPopupMenu(속성, x좌표, y좌표, pWnd );기본적으로 메시지 호출하여 콜백함속성에 TPM_RETURNCMD|TPM_NONOTIFY를 이용하면 리턴 값으로 메시지 값을 받아 사용할 수 있다. (선택을 안할 경우 0값 리턴) 보통 좌표는 GetCursorPos()로 마우스 좌표 받아옴 pWnd 는 AfxGetApp()->GetMainWnd(); 에서 받아오거나 대화상자에서 호출시 this // 팝업 메뉴 제거cMenu.DestroyMenu(); 2017. 5. 10. R6025 - pure virtual function call 순수 가상 함수 호출하면 에러 뜸 그렇다고 순수 가상 함수 객체는 독립적으로 만들 수 없고 외부에서 순수 가상 함수 포인터로 함수를 호출해도 실체가 없어서 포인터에러가 뜬다. 그래서 이 오류가 뜨는 경우는 주로 순수 가상 함수가 들어있는 추상 클래스에서 부모 클래스나 자식 클래스에서 해당 함수를 호출 할 때 생길 수 있다. 오류 잡기 void handle_pure_virtual_function_call(){RaiseException(EXCEPTION_ACCESS_VIOLATION, 0, 0, NULL);} 그리고 프로그램 시작 부분에 _set_purecall_handler(handle_pure_virtual_function_call)호출 2017. 4. 25. Observer Pattern https://ko.wikipedia.org/wiki/%EC%98%B5%EC%84%9C%EB%B2%84_%ED%8C%A8%ED%84%B4 - 둘 다 상속과 다형성을 이용해서 관리 - 서브젝트안에 옵저버를 등록해두고 서브젝트에서 이벤트가 생길때 NotifyObservers()를 호출하면 등록된 옵저버의 notify()를 호출 - 다형성을 이용하여 가상함수를 호출 하면 객체마다 그에 따른 동작을 할 수 있음 - 느슨한 결합!서브젝트에서 옵저버를 등록하고 필요한 애들만 알리기만 하므로(알림 당한 옵저버는 함수를 콜백) 서브젝트에서 직접 함수를 호출 하지 않아서 옵저버 객체의 실체를 알지 못해도 사용할 수 있다. (옵저버 등록은 해당 옵저버에서 서브젝트의 함수를 호출하여 등록 할 수 있으므로) 2017. 4. 21. 이전 1 ··· 5 6 7 8 9 10 11 ··· 38 다음