我有个类是继承自CObject的
如Class A : public CObject
{}我想自定义消息如下:
BEGIN_MESSAGE_MAP(A,CObject)
ON_MESSAGE(WM_XX,XXX)
END_MESSAGE_MAP()最终提示error C2039:'messageMap': is not a member of 'CObject'这个怎么解决呢?

解决方案 »

  1.   

    消息得是从CWnd上继承下来的子类才能用
      

  2.   

    我现在是一个主程序调用一个链接库,现在想让主程序与DLL之间通信,因为DLL中有个Socket,当OnReceive有数据时,我想让DLL通知主程序来接收数据,怎么实现呢?
      

  3.   

    改成Class A : public CWnd
    创建Class A的时候,调用一次Create,把矩形大小创建成0,0,0,0就可以了,
    一样的用
      

  4.   


    但是这个Class A : public CObject是之前已经有的类,怎么改呢?
      

  5.   

    如果你只是想响应socket的消息那可以通过winsocket直接写
    无需窗口接收消息
      

  6.   

    因为socket是在DLL中的,主程序向DLL中的socket发送数据,socket中有数据时就会触发OnReceive。我现在是想发送数据与接收数据发开来操作,如何当OnReceive有数据时,主程序可以知道并将数据处理呢?
    现在这个事搞得很头痛啊,新手求救呐!!!
      

  7.   

    这个dll是你自己写的么?
    你先看一下有关winsocket东西然后可能自己就知道该怎么做了
      

  8.   

    是我自己写的,我想实现发送数据与接收数据(处理)同时进行,也就是两个线程,但是当DLL中Socket中有数据时我不知道主程序如何才能知道,能够的及时的将数据取走并校验,而且这个缓存区该怎么建立?是要建个全局的吗?感觉好乱啊
      

  9.   

    我也让你说糊涂了
    当DLL中Socket中有数据时我不知道主程序如何才能知道?
    你的主程序是不是窗口程序呢
    这个可以发消息过去啊
    逆着个dll专门用来处理通信的?
    为什么要把这个功能独立出来呢?
    dll独立运行?
    你是在做代码注入?
    感觉确实挺乱的
      

  10.   

    1.你在启动线程监听的时候(看你的声明,那么应该是构造网络接口对象的时候),把窗口句柄或者窗口对象指针传递过去,就可以了。到时候 OnReceive 的时候就通过这个窗口指针调用你新加的自定义的成员函数。2.你还可以用新定义 的 WM_XXX。你可以重载 WindowProc,里面是你熟悉的 Win32 窗口过程函数,你不熟悉?你参考第一条吧……
      

  11.   

    用函数回调来实现。typedef void (*PMYFUNC)(const char*, int);PMYFUNC pMainFunc = NULL;void OnReceive(const char* lpszcData, int len)
    {
    if (pMainFunc) //pFunc为指向主程序的函数指针
    {
    pMainFunc(lpszcData, len);
    }
    }