1.手动删除
1.首先确定控件有哪些相关的变量和函数;打开.rc2文件在里面删除对应的控件图标;
2.打开主对话框头文件;(一般类向导生成的函数和变量定义都在头文件的最后一个“public”l里);找到生成的变量定义和函数定义将其删除;
3.打开对话框源文件,找到控件定义的处理函数,将其删除(也可在最开始时双击控件按钮找到定义函数进行删除)
4.在BEGIN_MESSAGE_MAP()消息映射函数里,将控件对应的消息函数删除(一般有有波浪线标志)
5.最后删除变量的数据交换语句;在void CTestDlg::DoDataExchange(CDataExchange* pDX)函数里;这里的test为自定义的函数。
2.通过类向导删除
1.打开.rc文件;找到欲删除的控件;选中控件后按右键;选择“类向导”;在类向导页面找到控件对应的消息、成员变量,选中后点击“删除处理程序”;有的控件没有事件函数,可以直接删除,比如文本
此时在源文件里变量的定义声明、数据交换函数的相关语句、消息映射中的信息都被注释了。
2.在对话框内删除控件。
上面删除方法解决的是添加控件后自动添加的地方,而有的时候是我们主动写的代码,用到了控件iD等变量,这就需要我们自己找出来,删掉。一般编译时就会报错,这种好办,找到报错的地方修改。有的时候编译时检查不出来,运行时报错,这就要通过设定断点找出位置。
3.常见问题
3.1.编译时报错error 2001和1120
1 这个编译报错不会提示位置,这个报错可能是有mfc的消息函数没实现,
解决方法:进入类向导,如下图
用上面方法二删除的时候会删除成员变量和函数,而容易漏删的是消息messages
Messages栏里面黑色粗体的是已经添加的消息,看看有没有没用的,比如WM_HSCROLL,是一个滑动条的消息,删滑动条的时候很容易漏删这个。或者在源文件Dlg.cpp里的BEGIN_MESSAGE_MAP注释掉没用到的消息函数。
2 这个报错的另一个原因是库文件没配置对
3.2.运行的时候报错
比如在一个按钮里设定其他按钮能否按下,写了以下几行代码,用到了这些按钮的ID,把这些按钮删除后,这几句话就出错了。但编译没报错,运行时报错,可以通过设定断点找出位置。
3.3.运行时出现“不支持尝试执行的操作”
原因分析:
1.控件ID修改,与关联变量没有对应上,因此报错误。
2.删除了某些控件,但是对应的控件变量没有删除掉。
解决方法:
在控件关联函数DoDataExchange()中查找并删除对应的控件变量或冗余的变量。
4.写在最后
从最不满意的客户身上,学到的东西最多。
从无到有,是件快乐的事;而从有到无,同样是种快感。
参考:https://blog.csdn.net/sinat_41852207/article/details/96044293