mfc如何幹淨的刪除控件

參考:https://blog.csdn.net/b2292486308/article/details/53695662

 

一:手動刪除

1.首先確定控件有哪些相關的變量和函數;打開.rc2文件在裏面刪除對應的控件圖標;

2.打開主對話框頭文件;(一般類嚮導生成的函數和變量定義都在頭文件的最後一個“public”l裏);找到生成的變量定義和函數定義將其刪除;

3.打開對話框源文件,找到控件定義的處理函數,將其刪除(也可在最開始時雙擊控件按鈕找到定義函數進行刪除)

4.在BEGIN_MESSAGE_MAP()消息映射函數裏,將控件對應的消息函數刪除(一般有有波浪線標誌)

5.最後刪除變量的數據交換語句;在void CTestDlg::DoDataExchange(CDataExchange* pDX)函數裏;這裏的test爲自定義的函數。

二:通過類嚮導刪除

1.打開.rc文件;找到欲刪除的控件;選中控件後按右鍵;選擇“類嚮導”;在類嚮導頁面找到控件對應的消息、成員變量,選中後點擊“刪除處理程序”;有的控件沒有事件函數,可以直接刪除,比如文本

此時在源文件裏變量的定義聲明、數據交換函數的相關語句、消息映射中的信息都被註釋了。

2.在對話框內刪除控件。

上面刪除方法解決的是添加控件後自動添加的地方,而有的時候是我們主動寫的代碼,用到了控件iD等變量,這就需要我們自己找出來,刪掉。一般編譯時就會報錯,這種好辦,找到報錯的地方修改。有的時候編譯時檢查不出來,運行時報錯,這就要通過設定斷點找出位置。

一 編譯時報錯error 2001和1120

      1 這個編譯報錯不會提示位置,這個報錯可能是有mfc的消息函數沒實現,

解決方法:進入類嚮導,如下圖

 

用上面方法二刪除的時候會刪除成員變量和函數,而容易漏刪的是消息messages

Messages欄裏面黑色粗體的是已經添加的消息,看看有沒有沒用的,比如WM_HSCROLL,是一個滑動條的消息,刪滑動條的時候很容易漏刪這個。或者在源文件Dlg.cpp裏的BEGIN_MESSAGE_MAP註釋掉沒用到的消息函數。

       2 這個報錯的另一個原因是庫文件沒配置對

二 運行的時候報錯

比如在一個按鈕裏設定其他按鈕能否按下,寫了以下幾行代碼,用到了這些按鈕的ID,把這些按鈕刪除後,這幾句話就出錯了。但編譯沒報錯,運行時報錯,可以通過設定斷點找出位置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章