MF C: утверждение отладки не выполнено? - PullRequest
0 голосов
/ 13 июля 2020

Когда я запускаю программу в режиме отладки, я получаю эту ошибку.

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);
}
...