要在A和B间传递消息,我是这样做的:
1、在A中定义消息AS_TITLE = ::RegisterWindowMessage("Answer");
   发送消息
    ::PostMessage(hwndB, AS_TITLE, (UINT)(LPCTSTR)strCaption, 0);2、在B中同样定义消息AS_TITLE = ::RegisterWindowMessage("Answer");
   屏设置消息相应函数为
   LRESULT CMainFrame::OnReply(WPARAM wParam, LPARAM lParam)没有反映,不知道是哪里出错了。
请各位高人(比我高的人^_^)指点

解决方案 »

  1.   

    to happyparrot(快乐鹦鹉) 
       A是一个对话框程序,调用B;
       B是单文档应用程序能够用PostMessage发送给B发送字符串数据吗?在OnReply中的wParam总是被认为是Int型。
      

  2.   

    1、去定义一下你的消息,例如 #define MYMSG USER_MASSAGE + 10 之类
    2、在消息处理的中增加对自定义消息的case,并调用自己的处理函数
    3、添加对处理函数
      

  3.   

    to sdsuper(泊舟) 
       我知道你的意思,我记得应该还有其他方法处理消息,不一定要用这样吧。
      
    我觉得我的这个思路大体是对的,肯定是哪里出了问题,使得它不能按我指定的方式运行。
      

  4.   

    函数功能:该函数定义一个新的窗口消息,该消息确保在系统中是唯一的。返回的消息值可在调用函数SendMessage或PostMessage时使用。    函数原型:UINT RegisterWindowsMessage(LPCTSTR lpString);    参数:    lpString:指定将被注册的消息的以‘\O’结束的字符串指针。    返回值:如果消息被成功注册,返回值是在范围OxCOOO到OxFFFF的消息标识符;如果函数调用失败,返回值是零。要得到更多的错误信息,调用函数GetLastError。    备注:RegisterWindowMessage通常为合作应用程序间的通信注册消息。    如果不同的应用程序注册同样的消息字符串,应用程序返回同样的消息值。消息保持注册,直到会话完成。    当一个以上的应用程序必须处理同一个消息时,必须使用RegisterWindowMessage。要在窗口类里发送私有消息,应用程序可以使用UM_USER到OX7FFF范围内的任意整数。(在此范围的消息对窗口类私有,而不是对应用程序私有。如,预定义的控制类如BUTTON, EDIT LISTBOX和COMBOBOX可用此范围的值。)
      

  5.   

    你可以查看一下RegisterWindowMessage的返回值看看第二次注册的是否成功!
      

  6.   

    PostMessage只能在单线程内传递消息,现在已经是两个进程了,这个函数不行了吧。PostThreadMessage支持线程间消息传递,不过线程必须属于LUID相同的进程~~~谁有好办法,我也学学吧~~
      

  7.   

    用PostMessage为什么只能传递“数字”,不能传递“字符”???
    在A中
        ::PostMessage(hwndParent, AS_TITLE, (UINT)(LPCTSTR)strCaption, 0);
        (UINT)(LPCTSTR)转换后还能保持数据的正确性吗?确保B能获得一个字符串??在B中
        LRESULT CMainFrame::OnReply(WPARAM wParam, LPARAM lParam)
       {
              g_WndChildTitle = (LPCTSTR)wParam;//这样得到的只是“\0”,为什么会这样
        }
      

  8.   

    我将A中程序做了如下修改:
      ::PostMessage(hwndParent, AS_TITLE, (WPARAM)&strCaption, 0);传递的是一些乱码,如何修改呢?