ASSERT(FromHandlePermanent(hWndNew) == NULL)
1367 단어 MFC
저자: jqka2시간: January 17, 2013 분류:
일반적인 MFC 프로그램 Release에서는 문제가 없습니다.사실 잠재적인 다른 문제가 존재할 수도 있다.오늘 메모리 유출 디버깅 때문에프로그램을 Debug 버전으로 컴파일한 다음 디버깅을 시작하면 실패를 단언합니다.
이번 오류는 MFC의 원본 파일 wincore에 있습니다.cpp의 320 줄입니다.
BOOL CWnd::Attach(HWND hWndNew)
{
ASSERT(m_hWnd == NULL); // only attach once, detach on destroy
ASSERT(FromHandlePermanent(hWndNew) == NULL);
// must not already be in permanent map
if (hWndNew == NULL)
return FALSE;
CHandleMap* pMap = afxMapHWND(TRUE); // create map if not exist
ASSERT(pMap != NULL);
pMap->SetPermanent(m_hWnd = hWndNew, this);
#ifndef _AFX_NO_OCC_SUPPORT
AttachControlSite(pMap);
#endif
return TRUE;
}
320 줄 위치:
ASSERT(m_hWnd == NULL);
일반적인 대화상자 프로그램은 세 개의 대화상자를 동적으로 만듭니다.첫 번째 단계까지 디버깅하는 것은 문제없다.두 번째는 CXXDlg->Create(...)로 갑니다.그때 Asserting Failed에 보고해.
이번에는 두 번째 대화상자의 특수한 코드를 생각해야 한다.그래.내 자식은 CEdit를 하나 분류했다.
나는 CExtEdit 클래스를 썼다.CExtEdit m 변수를 ClassWizard로 바인딩했습니다.ctlExtEdit.끝났어. CXXDlg::OnInitDialog()에 m 를 넣었어.ctlExtEdit.SubClassDlgItem(...).이렇게 해서 mctlExtEdit의 중복 하위 클래스입니다.
해결 방법은 다음과 같습니다.
태그: MFC, 디버깅
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MFC는 화면을 나눈 후 좌우 두 개의 대화상자, 즉 두 개의view 구역 관련 매개 변수로 나뉘어 설정한다.1. 모든 메뉴 막대 버튼을 CmainFrame 클래스로 정의하는 것이 좋습니다.메뉴 표시줄 단추를 다른view에 정의하고 다른view인터페이스를 클릭하면 해당 메뉴 항목이 비워지는 현상이 일어나지 않습니다.이 현상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.