MDI기반이고
자식창이 2개 있습니다.
자식창 각각 cview클래스 상속받아 만들었고
각각의 이름은 다음과 같습니다.
- CMFCApplication2View
- asd
CMFCApplication2View 창에서 마우스우클릭시 전역변수 값 a가 10씩 증가 되고
asd에서 그 갱신된 값을 그리기 위해 다음과 같이 코딩하였습니다.
void CMFCApplication2View::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
a = a + 10;
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
asd* pView = (asd*)pFrame->GetActiveView();
pView->Invalidate(TRUE);
CView::OnRButtonDown(nFlags, point);
}
위와 같이 하면 오류는 안생기는데,
예외 발생(0x0F222714(mfc140ud.dll), MFCApplication2.exe): 0xC0000005: 0x00000020 위치를 읽는 동안 액세스 위반이 발생했습니다..
라고 뜨면서 프로그램이 중지되네요
문제가 되는 부분이 pView->Invalidate(TRUE);
이부분인데
이부분을 없애면, 즉각적으로 화면이 갱신이 안됩니다TT
변수를 다른 대화상자로 넘겨주는거임?
ㄴㄴ아님.. 변수a는 애초에 STDAFX에 선언된 전역변수라 상관없어 pView->Invalidate(TRUE); 이게 문제TT
전역변수 말고 다른 대화상자 객체의 인스턴스 포인터를 얻어와서 값을 넘겨주는 식으로 구현해야 하는거 아니야? 전역변수를 써본적이 없어서...