大家好,有个问题咨询下.我手上有个比较特殊的MFC工程,里面没有普通的view和doc类.只有frame类. 数据都是存放在通过工程A产生的DLL里面.2D图形的显示则是通过B工程的DLL产生的, 产生以后的view贴在childframe上面. frames通过API来获得和修改数据.问题如下:如果选中一个几何图形并点击右键,一个属性框就会弹出来. 此时如果我按DEL键, 被选中的图形会被删掉.经过调试,我发现是frame里面的ERASE菜单响应函数被调用了,因为它对应的快捷键是DEL. 我查看了产生属性窗口的代码,它位于工程A中,里面它指定了自己的响应函数.我发现它根本没有被调用即使我先点击属性窗口再按DEL键.由于此工程为了界面好看是从别的库派生的. 我找到了之前的代码并且做了测试. 情况如下:属性窗口出现以后, 如果先点击属性窗口再按DEL键.那么属性窗口自己的处理函数会被调用. 如果先点击frame再按DEL键,则被帖在frame的view对应的响应函数会被调用. 我想使重新派生的工程也达到这个状态.请问大侠们这个问题有什么好的解决思路没有? 谢谢.

解决方案 »

  1.   

    这个是由于框架快捷键起作用了。解决办法是
    在资源编辑器里面,把DEL的快捷键删掉,然后手动在frame的键盘消息响应里面调用ERASE的响应函数。这样以后就只有框架有输入交点focus时候才会有快捷键。
      

  2.   

     重写pretranslatemessage,自己处理DEL消息
      

  3.   

    请问二楼为什么原来的程序(直接从CWINAPP派生)框架快捷键没有起作用呢? 那个程序也带删除快捷键菜单.
    另外请问"框架有输入交点focus时候"是什么意思? 可以讲下吗 ? 谢谢.
      

  4.   

    我对比了下, 原来的程序没有设置DEL快捷键, 这个就是原因. 分数已给. 有空的话请告诉我下"框架有输入交点focus时候"是什么意思? 谢谢.