照著書上做的一個小的Demo,就是點擊的時候改變按鈕的內(nèi)容,howerver,它的程序,點擊叉叉關(guān)閉可以正確的關(guān)閉程序,可是我的呢,點擊關(guān)閉的時候,沒有任何反應(yīng),相反,和點擊按鈕的一樣的動作,改變按鈕的內(nèi)容,查了網(wǎng)上的資料,發(fā)現(xiàn)時那個發(fā)送消息調(diào)用的就是默認的兩個按鈕,也就是IDOK和IDCANCEL。我重寫的話,就用到了這兩個,二把它們的CDialog::OnOK();和CDialog::OnCANCEL();都注釋掉了,這樣調(diào)用的當然就是那個響應(yīng)的函數(shù)了。
解決辦法:
1.我做的就是,添加消息VM_CLOSE對應(yīng)的消息函數(shù),OnClose重寫,里面加入 EndDialog(IDOK);然后,就OK了。
代碼:
void CTest5Dlg::OnClose()


{
// TODO: Add your message handler code here and/or call default
EndDialog(IDOK);
CDialog::OnClose();
}
2,我想啊,這個不是跟默認的IDOK和IDCANCEL有關(guān)嗎,那我不用嘛,因為這兩個按鈕ID很特殊,不要隨便改寫,于是我就換個ID
看看嘛,好像例子那個Demo就是這樣,沒有用那個兩個照樣可以正常運行哦。
于是重新做一個試試。
經(jīng)過驗證,OK,不過比較曲折,原因當然是:ID太麻煩了,更改的時候如果不徹底,搞不好資源編輯器就出問題了。于是,
我做了幾次失敗后,就直接開始刪除所有的button,就是那些OK,CANCEL,然后直接新建,照樣就比較好,而且相關(guān)的函數(shù)都是直接編寫,
不用什么默認的IDOK,IDCANCEL的麻煩,而且成功了。
經(jīng)過上面的這些思考,終于完成了。
了解到,關(guān)于關(guān)閉的消息,VM_CLOSE,還有,相應(yīng)的調(diào)用的函數(shù)Onclose函數(shù),如果需要重寫的話就直接重載,載消息中相應(yīng)的添加。這樣就沒有什么問題了。。。。。
posted on 2010-02-04 18:01
deercoder 閱讀(563)
評論(0) 編輯 收藏 引用