我在一个地方发送消息  例如:
PostMessage(SENDFILE, number, 1);
然后在另一个地方接受消息。
问题:当我Release运行的时候正常接受这个消息,但是当我Debug运行的时候收到这个消息以后发现number这个参数的值没有传递过来。 但是我在PostMessage()下面加了一句
MessageBox(number);  这样以后发现number竟然传递过去了。真心求解释。

解决方案 »

  1.   

    CString就有问题了。PostMessage是非阻塞的,在PostMessage的同时,所在函数继续向下运行,当函数结束时,你发送的这个number串就被回收了,所以消息接收处得到的串地址虽然正确,但内容已经乱了。
      

  2.   


    说的对哦,你用sendmessage把,这个是阻塞的
      

  3.   

    按3楼所说的是假定CString类型数据是个栈数据,函数执行完返回,debug模式有问题,而release没问题,我做了下测试传递一个整型的数据在两种情况下都没任何问题,如果真是这样楼主不防把CString类型数据的作用域改变下看是否还会有此问题。
      

  4.   

    整形的值传递是没有问题的,但CString其实是个指针啊,你只能传递这个指针值,而指针指向的内容先会被系统回收掉的
      

  5.   

    有道理,我测试一下啊。我Post完以后休息上10秒钟
      

  6.   

    ===
    这种方法并不可靠。Sleep可能都会休息;另外你确定10秒就能保证顺序是正确的?