Я изменил приложение, основанное на диалоге 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++
как решить это приложение?спасибо.