这几天做的一个任务是做一个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();