我在 windows xp 下面,切换到微软全拼输入法,切换成全角,输入任意数字,诸如12345,不停地输入,会得到WM_CLOSE消息。这个WM_CLOSE消息哪里来的哦?有朋友有类似经历么?如何解决?全角的情况下,输入汉字,没有这个问题。
切换成半角,输入数字或者汉字,都没有这个问题。
windows xp下,搜狗输入法也没这个问题。
windows vista下,微软全拼输入法也没这个问题。

解决方案 »

  1.   

    如果是这样,就是这个输入法的这个版本有bug。
      

  2.   

    但我不能fix人家微软输入法的bug呀,我得让我的这个软件在顾客们的windows xp下面没有这种问题。有什么解决办法呢?
      

  3.   

    而且奇怪的是,在notepad里面,全拼输入法,输入无数个数字,没有这种问题啊,要么notepad处理了,要么就是根本没这个问题。但是我的这个软件竟然有这个问题,老是收到WM_CLOSE消息,然后弹出对话框,问是否要保存当前的文档。所以,也可能不单单是输入法的问题。也可能是了,暂时我还不确定。
      

  4.   

    如果只在你的程序中有问题,那就不是输入法的bug了,你在响应WM_CLOSE消息的代码上加个断点,看看从调用堆栈窗口的信息能否找到产生这个消息的地方。
      

  5.   

    项目既包含 托管代码,也包含非托管代码。C++的那一块,断点死活打不上,怎么回事?
    我已经enable了 调试非托管代码Debug的时候,Modules window里面,只有托管的EXE和dll被加载了。没有非托管的dll。如何解决?有朋友有类似经验么?
      

  6.   

    断点打不上,显示  
    The breakpoint will not currently be hit. No executable code is associated with this line.
    Possible causes include: conditional compilation ro compiler optimizations.但是我在打断点的地方设置MessageBox,照样弹出Message。说明代码肯定是执行到了那里了。不知道为啥,断点打不上。
      

  7.   

    你加上MessageBox,在MessageBox这行上设置断点也不行吗?
      

  8.   

    是的,不行,但是MessageBox确实弹出来了,但是断点打不上,进不去。
      

  9.   

    我在网上看到Mixed Mode (Native and Managed Simultaneous) Debugging
    If you are debugging in mixed mode, be sure the Modules window is showing both managed and unmanaged modules (right click on it and select Show Modules for all Processes) and make sure you are looking at the module type that matches your breakpoint. 但是我这边右键单击modules window,没有什么“show modules for all processes”啊。但我怀疑我这边的问题就是那些C++代码没找到对应的DLL什么的。没加载那些module。不知道怎么解决。
      

  10.   

    已经 enable unmanaged code debuggin了。
    网上很多人碰到类似问题,勾上这个选项就可以了。我这边确还是不行。
      

  11.   

    混合模式调试是用多种编程语言混合编程的时候用的,你的程序应该是只有VC吧。你可以在WM_CLOSE消息响应函数中抛个异常试试。
      

  12.   

    我的程序有WPF(C#)的。界面都是WPF。抛个异常?什么意思?想做什么呢?
      

  13.   

    那就需要混合模式了,设置VC的DLL项目属性,在“调试”中把“调试器类型”设置为混合,把EXE程序及路径添加到“命令”后面。再把该DLL项目设置为启动项目,然后再调试。
      

  14.   

    在“调试”中把“调试器类型”设置为混合,
    --------------
    本来是auto,我把它改成mixed,但这个应该是都可以的吧。
    把EXE程序及路径添加到“命令”后面。
    --------------
    这个本来就已经添加在后面了哦。
    再把该DLL项目设置为启动项目
    -----------------------------
    奇迹出现了,大哥,断点打上了哦。谢谢。哈哈。(我此前一直没做的就是这一步,以前都是从WPF启动的,因为main程序在那里)
    这一步有什么重要意义呢?
    放心吧。这100分至少给你90.我先继续干活,争取找到这个WM_CLOSE消息的来源。
      

  15.   

    关键就是要调试这个DLL项目,不设置启动项目也可以用鼠标右击这个项目选择调试,VS就是这样设计的,所以我们只能按照规定来办。