Сбой CSplitterWnd CreateStatic () в Windows 10 - PullRequest
1 голос
/ 15 октября 2019

Почти 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?

...