这几天做的一个任务是做一个Dialog,需要在这个Dialog中添加一个自定义的CSrollvew类,但是遇到一个比较扯淡的问题,程序直接运行时可以的,调试状态下一点击CSrollview就挂了。而且错误信息很少,后来在师傅帮助下,发现在OnMouseActivate中挂了。原来发现在Dialog与CSrollview中要加一层CFrameWnd,不然就会报错。

  代码如下(可以在dialog的OnInitDialog)

    CRect rectWndClient;
     GetClientRect(&rectWndClient);

     CFrameWnd *pFrame= new CFrameWnd();
     pFrame->Create(NULL,NULL,WS_VISIBLE|WS_CHILD,rectWndClient,this);

     CRuntimeClass *pViewClass=RUNTIME_CLASS(CMyScrollView);

     CMyScrollView *pView=(CMyScrollView*)pViewClass->CreateObject();
     pView->Create(NULL,NULL,WS_VISIBLE|WS_CHILD,
                         rectWndClient,
                         pFrame,123);
     pView->OnInitialUpdate();