今天,在写3D地图编辑器的时候。
单击修改属性菜单项的时候,崩溃了。
弹出这诡异的窗口。
首先,由于明确了出错的地方,直接在对应的事件处理函数打断点,进行单步调试。
void CDMapEditorView::OnModifySKmeshAttrib()
{
// TODO: 在此添加命令处理程序代码
m_pNodeManager->SetMapState( MS_MODIFYSKMESHATTRIB );
m_pSKMeshModifyPanel->LinkData(
m_pNodeManager->GetSelectedSkMesh()->GetSkMeshData(),
m_pNodeManager->GetSelectedSkMesh()->GetPosInfo() );
m_pSKMeshModifyPanel->ShowWindow( SW_SHOWNORMAL );
}
发现错误出在LinkData这句上,进入函数内部,发现了奇怪的现象。
m_MeshPosMovePowerBar是一个滑动条的控件变量,由窗体编辑器帮忙创建的,但是,在这里它的hWnd竟然是NULL,太诡异了这。
之后检查窗体编辑器,控件变量是确实的创建出来了。
好吧,很诡异。突然想起来,之前这个对话框创建成了HTML对话框。可能是,这部分出了问题。没有完全的改为普通的对话框。
继续检查代码,这部分没有问题,所有的CHTMLDialog都改为了,CDialog。
此时陷入迷茫。。。。。。
然后无意中发现,onInitDialog()里面没调用CDIalog的onInitDialog ......好吧。
原来如此,于是直接删掉OnInitDialog,Bug解决。