我有一个CFormview的类,资源用的是IDD_FORMVIEW,根据这个资源建立了一个CFormview的派生类,但是我想在create的时候用其他的资源IDD_FORMVIEW1,我该怎么实现,谢谢

解决方案 »

  1.   

    直接替换FormView.h中的IDD的值就行了。
      

  2.   

    但是我想在运行的时候再决定用那个IDD,比如我根据屏幕分辨率,如果是1024*768我就用IDD_FORMVIEW,否则就用IDD_FORMVIEW1
      

  3.   

    我是在MAINFRAME的ONCREATECLIENT里面用到了这个类
    RUNTIME_CLASS(CFormViewManager),那我怎么重新构造呢?谢谢
      

  4.   

    从CFormView继承的类,默认构造函数是这样的:
    CYourView::CYourView()
    : CFormView(CYourView::IDD)
    这里用CYourView::IDD设置了对话框资源模板的ID。需要用另外的对话框资源来替换,就要想办法来替换这个ID。在改动最小的情况下,可以考虑重载CYourView::Create()函数:
    BOOL CYourView::Create(LPCTSTR /*lpszClassName*/, LPCTSTR /*lpszWindowName*/,
    DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
    CCreateContext* pContext)
    {
    m_lpszTemplateName = MAKEINTRESOURCE(YourDlgID);
    return CFormView::Create(NULL, NULL, dwRequestedStyle, rect, pParentWnd, nID, pContext);
    }而这个YourDlgID可以是一个全局变量,在创建这个类的对象之前,根据需要赋以不同的对话框模板资源ID的值。以上我没有试过,你试试看。