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,把这些按钮删除后,这几句话就出错了。但编译没报错,运行时报错,可以通过设定断点找出位置。

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