исключение mfc CDockablePane :: DrawCaption - PullRequest
0 голосов
/ 15 марта 2019

Я изменил приложение, основанное на диалоге mfc, в рамочное приложение. Я создал класс FrameClass и ClientPanel.Все в порядке с Debug build.but в режиме Release / MT получил исключение InvalidArgException.это основной исходный код:

//this is how to init frame windows in InitInstance
CMainFrame * pFrame = new CMainFrame();
m_pMainWnd = pFrame;
pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW, NULL, NULL);
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();

//this is my FrameWnd Class Declare
class CMainFrame :public CFrameWndEx

//CMainFrame have member m_client_panel
CClientPanel m_client_panel;  //CClientPanel  devied from CDockablePane


//the code create a left side panel
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
        return -1;


    CDockingManager::SetDockingMode(DT_SMART);
    // TODO:  在此添加您专用的创建代码

    if (!m_client_panel.Create(L"客户端列表", this, CRect(0, 0, 250, 800), TRUE, ID_CLIENT_PANEL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
    {
        AfxMessageBox(L"未能创建客户端列表");
        return -1;
    }

Исключение, выдаваемое 'ENSURE (pOldFont! = NULL);'в функции CDockablePane :: DrawCaption ниже.

void CDockablePane::DrawCaption(CDC* pDC, CRect rectCaption)
{
    ....
    CFont* pOldFont = pDC->SelectObject(&(GetGlobalData()->fontRegular));
    ENSURE(pOldFont != NULL);  //this line got a  exception

Стек вызовов:

 HospConsole.exe!AfxThrowInvalidArgException() 行 228    C++
 HospConsole.exe!CDockablePane::DrawCaption(CDC * pDC, CRect rectCaption) 行 2361    C++
 HospConsole.exe!CDockablePane::OnNcPaint() 行 513    C++
 HospConsole.exe!CWnd::OnWndMsg(unsigned int message, unsigned int wParam, long lParam, long * pResult) 行 2465    C++
 HospConsole.exe!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) 行 2099    C++
 HospConsole.exe!CBasePane::WindowProc(unsigned int message, unsigned int wParam, long lParam) 行 1018    C++
 HospConsole.exe!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) 行 268    C++

как решить это приложение?спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...