Computer(IT)/Visual Studio C++

MFC 모달리스 대화상자로 View Update하기 기본

약탄치킨 2009. 2. 2. 15:07
반응형

class CMFC0418View : public CView
{
public:
 CInput dlg;

}

 // 대화상자 클래스 생서자

class CInput : public CDialog
{
public:
 CInput(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
 //{{AFX_DATA(CInput)
 enum { IDD = IDD_DIALOG1 };

 int  m_int; 
 CString m_str;
 //}}AFX_DATA

 CView *m_view; // 이부분 코딩 인벨리를 하기위해 CView로 변수 선언!

}

 

CMFC0418View::CMFC0418View()
{
 // TODO: add construction code here
 dlg.m_int = 10;
 dlg.m_str = "HELLO";
 dlg.m_view = this; // <== 여기!
}

 

// 업데이트 버튼 눌렀을때!

void CInput::OnUpdate()
{
 // TODO: Add your control notification handler code here
 UpdateData(TRUE);
 m_view->Invalidate(); // CView로 선언한 변수로 인벨리를 할수 있다!
}

 

// 일반 대화상자 여는 메뉴선택시

void CMFC0418View::OnAdd()
{
 // TODO: Add your command handler code here
 dlg.DoModal();
}

 

 

// 모달리스 대화상자 여는 메뉴 선택시

void CMFC0418View::OnInputdate()
{
 // TODO: Add your command handler code here
 if ( dlg.GetSafeHwnd() == NULL )
  dlg.Create( IDD_DIALOG1 );


 dlg.ShowWindow(SW_SHOW);

// GetSafeHwnd() 는 윈도우에 핸들을 리턴한다. 윈도우가 존재하지 않으면 NULL
 
}

 // 화면 출력부분

void CMFC0418View::OnDraw(CDC* pDC)
{
 CMFC0418Doc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here

 CString str;
 str.Format("%d",dlg.m_int);
 pDC->TextOut(100,200,str);
 pDC->TextOut( 100,100, dlg.m_str );
}

출처: cafe.naver.com/kilius
반응형