MFC는 화면을 나눈 후 좌우 두 개의 대화상자, 즉 두 개의view 구역 관련 매개 변수로 나뉘어 설정한다.

1489 단어 MFC
1. 모든 메뉴 막대 버튼을 CmainFrame 클래스로 정의하는 것이 좋습니다.메뉴 표시줄 단추를 다른view에 정의하고 다른view인터페이스를 클릭하면 해당 메뉴 항목이 비워지는 현상이 일어나지 않습니다.이 현상은 주로 메뉴 표시줄 단추의 정의view에 초점을 맞추지 않아서 발생합니다.
2. 업데이트 데이터 () 함수는 클래스별로 호출할 수 없습니다.CmainFrame 클래스에서 왼쪽view 대상을 정의하고 이 대상을 통해 왼쪽view 함수를 호출합니다. 이 함수의 정의에 업데이트 데이터 ()가 포함되면 오류가 발생합니다.
해결 방법: 왼쪽view의 클래스에서 사용자 정의 메시지를 정의하고 메시지를 이용하여 업데이트 데이터 () 함수를 보냅니다. 코드는 다음과 같습니다.
 
//CVIEW_L.h :
#define WM_UPDATEDATA_L  10000+4 //10000 。
 
//CVIEW_L.h :
LRESULT OnUpdateData_L(WPARAM wParam,LPARAM lParam);// : 。
 
//CVIEW_L.cpp :
ON_MESSAGE(WM_UPDATEDATA_L, OnUpdateData_L)
 
// CVIEW_L.cpp :
LRESULT CView_L::OnUpdateData_L(WPARAMwParam, LPARAM lParam)
{
UpdateData(wParam);
return 0;
}
 
// , :
CMainFrame*pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CTianDiTongXun_CView*pViewRes=(CTianDiTongXun_CView*)pMF->m_wndSplitter.GetPane(0,0);
pViewRes->SendMessage(WM_UPDATEDATA,FALSE);
 

3. 다른 종류에서 함수를 호출할 때 메시지를 보내고 대상 호출을 정의하며 정적 함수 방법을 사용해서 각자의 단점을 분석한다.
(1) 정적 함수: 정적 함수는 그 중 사용하는 변수를 정적 변수로 요구하며, 고체 중간에 컨트롤 클래스의 변수를 포함할 경우 정적 변수로 바꿀 수 없으며, 이 방법을 사용할 수 없다.
(2) 클래스의 대상을 정의한다. 이 방법은 A의 함수에서 B 함수를 호출해도 사용할 수 있고 A 함수에서 A 함수 클래스의 공공 클래스 변수를 사용해도 정상적으로 사용할 수 있다.다만 A 함수에 타이머 SetTimer가 나타나면 이 방법을 이용하여 A 함수를 호출하면 오류가 발생합니다.
(3) 메시지 발송: 메시지를 보내는 데 타이머 함수를 호출할 수 없습니다.타이머의 Ontimer와 SerTimer 함수를 모두 A클래스에 정의하고 A클래스의 상응하는 함수에서 B클래스 함수를 호출하는 메시지를 보냅니다. 그러나 B클래스에 저장된 함수 결과의 변수를 정적 변수로 정의해야 합니다. 그렇지 않으면 값을 사용할 수 없습니다.
 
끝나다

좋은 웹페이지 즐겨찾기