“试图执行的操作不受支持”解决

来源:互联网 发布:数据库的建立过程 编辑:程序博客网 时间:2024/04/29 19:00

今天在改写一个对话框程序时, 不断弹出了”试图执行的操作不受支持”的警告对话框, 如果点击”确定”忽略这个警告, 程序也能正常运行(并不会异常退出), 但在程序运行的某些时候, 会不断弹出这样的警告对话框.

这到底是怎么回事, 百思不得其解, 而且很奇怪这是个警告对话框, 不是错误对话框(一般错误对话框弹出后, 点击”确定”, 程序会退出的).

在网上查询一下, 有如下内容:

应当是资源的问题,或者某个资源在resource.h中有定义,但是窗体中被你删除了...遇到这种情况一般都是资源造成的,你好好检察一下你的窗体资源 .

这个突然提醒了我, 我记得我之前删除了界面中的几个资源, 会不会是这些资源相关的内容我没有删除干净, 于是在Debug模式下跟踪, 终于在” DoDataExchange(CDataExchange* pDX)”中发现如下代码” DDX_Check(pDX, IDC_CHECK_ADD_ASIC_NOTE, m_bIsAddAsicNote)”(其中资源ID为” IDC_CHECK_ADD_ASIC_NOTE”的CheckBox正是我所删除的一个资源, 咦, 既然我已经删除了这个资源, 那为什么在编译的时候程序不警告或报错呢. 在查找了一下, 发现原来在Resource.h中我也没有将” IDC_CHECK_ADD_ASIC_NOTE”删除, 所以导致, 编译时程序只是静态的分析Resource.h存在这个CheckBox的资源ID” IDC_CHECK_ADD_ASIC_NOTE”, 于是就假定这个资源存在, 故” DDX_Check(pDX, IDC_CHECK_ADD_ASIC_NOTE, m_bIsAddAsicNote)”处也不会报错, 但在程序运行时, 由于我多处调用”UpdatData(FALSE)”, 而这个函数会调用” DoDataExchange(CDataExchange* pDX)”函数, 而此时程序才发现其实” IDC_CHECK_ADD_ASIC_NOTE”对应的资源不存在, 所以就会弹出上面的警告了.

 

除此之外, 有时Resource.h中资源ID如果有重复, 也会导致上面的问题.

原创粉丝点击