Когда я запускаю программу в режиме отладки, я получаю эту ошибку.
Debug Assertion Failed!
Program: ...
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winhand.cpp
Line: 139
...
И это происходит из следующего кода.
CObject* CHandleMap::FromHandle(HANDLE h)
{
ASSERT(m_pClass != NULL);
ASSERT(m_nHandles == 1 || m_nHandles == 2);
if (h == NULL)
return NULL;
CObject* pObject = LookupPermanent(h);
if (pObject != NULL)
return pObject; // return permanent one
else if ((pObject = LookupTemporary(h)) != NULL)
{
HANDLE* ph = (HANDLE*)((BYTE*)pObject + m_nOffset);
ASSERT(ph[0] == h || ph[0] == NULL);
Но я не могу сказать что это за ошибка и как ее исправить.
У меня есть следующий вызов в "CMyDialog :: OnInitDialog ()", который вызывает сбой.
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
set_font_weight(IDC_STATIC1_LABEL, FW_BOLD | FW_BLACK);
SetDlgItemText(IDC_STATIC1, L"");
Это проблема при выполнении этих действий внутри OnInitDialog? В частности, проблему вызывает set_font_weight (GetFont ()).
void CMyDialog::set_font_weight(int nID, LONG weight)
{
CWnd *pwnd = GetDlgItem(nID);
CFont *pfont = pwnd->GetFont();
LOGFONT lf;
pfont->GetLogFont(&lf);
lf.lfWeight = weight;
pfont->CreateFontIndirect(&lf);
pwnd->SetFont(pfont);
}