• 分割窗口时CFormView与Pane关联时出现的问题


    分割窗口时,其中一个窗格Pane,所关联的视,这个视若是从 CEditView, CTreeView, CView等类导出的,则没有问题,若是从 CFormView导出的, 那么编译正常,但执行那个时会出现

     

    ---------------------------
    Microsoft Visual C++ Debug Library
    ---------------------------
    Debug Assertion Failed!

    Program: D:\VC_PROJECT\testMultiPane\Debug\testMultiPane.exe
    File: viewform.cpp
    Line: 69

    For information on how your program can cause an assertion
    failure, see the Visual C++ documentation on asserts.

    (Press Retry to debug the application)
    ---------------------------
    Abort(A) Retry(R) Ignore(I)
    ---------------------------

     

    错误,

    原因是 CFormView 的导出类,需要与一个Dialog资源关联,这个Dialog的属性必须是ws_childStyle必须选 “下层”SystemMenuTitleBar属性最好都设为False

    参见 http://www.cnweblog.com/vcbird/archive/2005/10/10/36404.html

     

    以前在出现

     

    错误提示时,不知如何处理,在这次通过点击“重试”,debugger停在了

     

    the debugge point to this line

    Code:

                   ASSERT(FALSE);          // invalid dialog template name

    which appears in the following code snippet of the file VIEWFORM.cpp

    Code:

    BOOL CFormView::Create(LPCTSTR /*lpszClassName*/, LPCTSTR /*lpszWindowName*/,

            DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,

            CCreateContext* pContext)

    {

            ASSERT(pParentWnd != NULL);

            ASSERT(m_lpszTemplateName != NULL);

     

            m_pCreateContext = pContext;    // save state for later OnCreate

     

    #ifdef _DEBUG

            // dialog template must exist and be invisible with WS_CHILD set

            if (!_AfxCheckDialogTemplate(m_lpszTemplateName, TRUE))

            {

                   ASSERT(FALSE);   //<====== debugger stops at this line       // invalid dialog template name

                   PostNcDestroy();        // cleanup if Create fails too soon

                   return FALSE;

            }

    #endif //_DEBUG

     

            // initialize common controls

            VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTLS_REG));

            AfxDeferRegisterClass(AFX_WNDCOMMCTLSNEW_REG);

     

            // call PreCreateWindow to get prefered extended style

            CREATESTRUCT cs; memset(&cs, 0, sizeof(CREATESTRUCT));

            if (dwRequestedStyle == 0)

                   dwRequestedStyle = AFX_WS_DEFAULT_VIEW;

            cs.style = dwRequestedStyle;

            if (!PreCreateWindow(cs))

                   return FALSE;

     

            // create a modeless dialog

            if (!CreateDlg(m_lpszTemplateName, pParentWnd))

                   return FALSE;

     

            m_pCreateContext = NULL;

     

            // we use the style from the template - but make sure that

            //  the WS_BORDER bit is correct

            // the WS_BORDER bit will be whatever is in dwRequestedStyle

            ModifyStyle(WS_BORDER|WS_CAPTION, cs.style & (WS_BORDER|WS_CAPTION));

            ModifyStyleEx(WS_EX_CLIENTEDGE, cs.dwExStyle & WS_EX_CLIENTEDGE);

     

            SetDlgCtrlID(nID);

     

            CRect rectTemplate;

            GetWindowRect(rectTemplate);

            SetScrollSizes(MM_TEXT, rectTemplate.Size());

     

            // initialize controls etc

            if (!ExecuteDlgInit(m_lpszTemplateName))

                   return FALSE;

     

            // force the size requested

            SetWindowPos(NULL, rect.left, rect.top,

                   rect.right - rect.left, rect.bottom - rect.top,

                   SWP_NOZORDER|SWP_NOACTIVATE);

     

            // make visible if requested

            if (dwRequestedStyle & WS_VISIBLE)

                   ShowWindow(SW_NORMAL);

     

            return TRUE;

    }

     

    如何,Google dialog template must exist and be invisible with WS_CHILD set”发现网文

    http://www.cnweblog.com/vcbird/archive/2005/10/10/36404.html

  • 相关阅读:
    经典SQL语句大全
    SQL中With AS
    SQL Server 2008 r2 安装过程图解
    TFS2010中如何添加用户
    SQL中标准函数范例
    关闭子窗体时刷新父窗体
    sharepoint网站备份和还原
    LogHelper类
    TFS2010用户解锁
    ADHelper类
  • 原文地址:https://www.cnblogs.com/cy163/p/1931083.html
Copyright © 2020-2023  润新知