Почти 20 лет я занимаюсь разработкой приложения MFC MDI. Он работал на Windows 98, Windows XP и Windows 7. Но он не работает на Windows 10 ... Есть идеи, почему? Вот код:
class CEdytorDocFrame : public CMDIChildWnd
{
DECLARE_DYNCREATE(CEdytorDocFrame)
public:
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter2;
CStatusBar m_wndStatusBar;
}
IMPLEMENT_DYNCREATE(CEdytorDocFrame, CMDIChildWnd)
CEdytorDocFrame::CEdytorDocFrame() :
m_nOldCY(0),
m_nOldEditH(1),
m_nOldViewH(1),
m_nOldEditMinH(0),
m_nOldViewMinH(0)
{
} // CEdytorDocFrame::CEdytorDocFrame()
BOOL CEdytorDocFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
CDebug::WriteLog("CEdytorDocFrame::OnCreateClient(), enter");
/*
** Create status bar
*/
if(!m_wndStatusBar.CreateEx(this, SBT_TOOLTIPS | SBARS_SIZEGRIP) ||
!m_wndStatusBar.SetIndicators(indicators, countof(indicators)))
{
TRACE0("Failed to create status bar\n");
return FALSE;
}
CDebug::WriteLog("CEdytorDocFrame::OnCreateClient(), status bar created");
/*
** Calculate heights and widths
*/
int wndW, wndH, treeW, treeH, viewW, editW;
wndW = lpcs->cx;
m_nOldCY = wndH = lpcs->cy;
// Set tree pane to be 1/4 of total width and maximum height
treeW = wndW/4;
treeH = 0;
// Set edit pane to be 4/7 height of edit window and maximum width
m_nOldEditH = MulDiv(wndH, 4, 7);
editW = 0;
// Set preview pane to be 3/7 height of edit window and maximum width
m_nOldViewH = wndH-m_nOldEditH;
viewW = 0;
CDebug::WriteLog("CEdytorDocFrame::OnCreateClient() wndW=%d, wndH=%d, treeW=%d, treeH=%d, viewW=%d, editW=%d",
wndW, wndH, treeW, treeH, viewW, editW);
// Create panels
if(!m_wndSplitter.CreateStatic(this, 1, 2))
{
TRACE0("Failed to create static splitter\n");
return FALSE;
}
CDebug::WriteLog("CEdytorDocFrame::OnCreateClient(), 1st splitter created");
Последний WriteLog()
не выполняется, поэтому я подозреваю, что некоторые проблемы с CreateStatic()
... Но почему только в Windows 10?