1、Dialog中insert控件picture,程序中用循环来显示图片时,需要重写dialog的OnCancel()方法。 方法中添加上DestoryWindow()函数的调用,同时注释CDialog::OnCancel();。 -->非模态dialog 原因: 循环显示图片,公用同一个dialog,在显示的第一个图片退出时,dialog创建的对象m_hWnd处于隐藏状态,并未销毁, 所以再显示第二张图片时,就会报错(wincore.cpp line:639行 源码:ASSERT(pWnd->m_hWnd == NULL); // only do once)
知识点:
模态Dialog,当DoModa()l函数执行中才会有窗口句柄m_hWnd的存在,DoModel函数执行完,系统就会释放窗口句柄m_hWnd, (类对象不一定此刻释放,但毕竟还是系统来完成);非模态Dialog,当Create后窗口句柄m_hWnd就存在,在需要的时候show出窗口。 它的句柄销毁依靠程序员调用函数DestroyWindow()来完成,类对象销毁必须手动delete。
2、winoc.cpp 345行报错,检查程序,控件处理正常。 那就是编译方式不对,由debug更换为releash就可以了。
3、如果项目中自动添加CanExit()函数,需要在创建项目的时候,勾选上“Automation”项。
|