照著書上做的一個小的Demo,就是點擊的時候改變按鈕的內容,howerver,它的程序,點擊叉叉關閉可以正確的關閉程序,可是我的呢,點擊關閉的時候,沒有任何反應,相反,和點擊按鈕的一樣的動作,改變按鈕的內容,查了網上的資料,發現時那個發送消息調用的就是默認的兩個按鈕,也就是IDOK和IDCANCEL。我重寫的話,就用到了這兩個,二把它們的CDialog::OnOK();和CDialog::OnCANCEL();都注釋掉了,這樣調用的當然就是那個響應的函數了。
解決辦法:
1.我做的就是,添加消息VM_CLOSE對應的消息函數,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有關嗎,那我不用嘛,因為這兩個按鈕ID很特殊,不要隨便改寫,于是我就換個ID
看看嘛,好像例子那個Demo就是這樣,沒有用那個兩個照樣可以正常運行哦。
于是重新做一個試試。
經過驗證,OK,不過比較曲折,原因當然是:ID太麻煩了,更改的時候如果不徹底,搞不好資源編輯器就出問題了。于是,
我做了幾次失敗后,就直接開始刪除所有的button,就是那些OK,CANCEL,然后直接新建,照樣就比較好,而且相關的函數都是直接編寫,
不用什么默認的IDOK,IDCANCEL的麻煩,而且成功了。
經過上面的這些思考,終于完成了。
了解到,關于關閉的消息,VM_CLOSE,還有,相應的調用的函數Onclose函數,如果需要重寫的話就直接重載,載消息中相應的添加。這樣就沒有什么問題了。。。。。
posted on 2010-02-04 18:01
deercoder 閱讀(563)
評論(0) 編輯 收藏 引用