2010.7.29 模式对话框
為什么點(diǎn)擊ONOK后,對話框上的控件資源會被刪除?OnOK做了什么事兒?
?
假如有一個對話框Class CMyDialog
我在CMyDialog中,聲明了一個m_button,然后在OnInitDlg()中create這個buttton,即m_button.create()
?
然后呢,聲明對話框?qū)ο?#xff0c;顯示對話框,如下:
CMyDialog m_dlg;?? //第一步
if(m_dlg.DoModal()==IDOK)? //第二步
{
}
//此時,關(guān)鍵之處,我想做什么呢?
m_dlg.m_button.getcheck();//第三步? 即取得dialog上button對象是否被選中,這樣做是否可以呢?
答案:報錯!
經(jīng)調(diào)試,發(fā)現(xiàn)第一步中,m_button還是空的,
第二步中,m_button已經(jīng)分配了內(nèi)存空間;
第三步中,m_button已經(jīng)釋放!!!!
為什么會這樣呢?因?yàn)閷τ谀J綄υ捒?DoModal之后,必須確定后,才能回到主程序,
這時候的確定,即OK按鈕,實(shí)際上調(diào)用了CDialog::virtual void OnOK();
OnOK()在關(guān)閉、銷毀了對話框之后,已經(jīng)釋放了m_button,雖然這時候m_dlg對象還存在,但是其中的控件資源已經(jīng)沒有了,所有第三步會報錯!
?
值得注意的是,這時候,在m_dlg中,自己定義的變量,比如定義一個int i,是沒有釋放的。
轉(zhuǎn)載于:https://www.cnblogs.com/peijihui/archive/2010/07/29/1788290.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的2010.7.29 模式对话框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bulter机器人_科普!九款使用率最高
- 下一篇: div超出不换行_文字超出显示点点点之e