1、Dialog中insert控件picture,程序中用循環(huán)來(lái)顯示圖片時(shí),需要重寫(xiě)dialog的OnCancel()方法。
方法中添加上DestoryWindow()函數(shù)的調(diào)用,同時(shí)注釋CDialog::OnCancel();。 -->非模態(tài)dialog
原因:
循環(huán)顯示圖片,公用同一個(gè)dialog,在顯示的第一個(gè)圖片退出時(shí),dialog創(chuàng)建的對(duì)象m_hWnd處于隱藏狀態(tài),并未銷毀,
所以再顯示第二張圖片時(shí),就會(huì)報(bào)錯(cuò)(wincore.cpp line:639行 源碼:ASSERT(pWnd->m_hWnd == NULL); // only do once)
知識(shí)點(diǎn):
模態(tài)Dialog,當(dāng)DoModa()l函數(shù)執(zhí)行中才會(huì)有窗口句柄m_hWnd的存在,DoModel函數(shù)執(zhí)行完,系統(tǒng)就會(huì)釋放窗口句柄m_hWnd,
(類對(duì)象不一定此刻釋放,但畢竟還是系統(tǒng)來(lái)完成);非模態(tài)Dialog,當(dāng)Create后窗口句柄m_hWnd就存在,在需要的時(shí)候show出窗口。
它的句柄銷毀依靠程序員調(diào)用函數(shù)DestroyWindow()來(lái)完成,類對(duì)象銷毀必須手動(dòng)delete。
2、winoc.cpp 345行報(bào)錯(cuò),檢查程序,控件處理正常。 那就是編譯方式不對(duì),由debug更換為releash就可以了。
3、如果項(xiàng)目中自動(dòng)添加CanExit()函數(shù),需要在創(chuàng)建項(xiàng)目的時(shí)候,勾選上“Automation”項(xiàng)。
聯(lián)系客服