目前正在设计一个系统(C++实现),  
需要将所有日志信息输出到多个不同的设备(文件,发送到其他服务器),  
需要采用缓冲方式(比如满100条输出),  我要将一个结构体struct发送到windows消息队列中,  
如何使用SendMessage/PostMessage和GetMessage函数来处理消息,
谁能告诉我该怎么用?
 如果不能使用缓冲区,我的想法是:  
使用一个信号量,再使用一个std::queue容器,  
这样实现的话是否会产生问题?

解决方案 »

  1.   

    PostMessage(hwnd, message, 0, addressof(struct var));
      

  2.   

    http://www.stcore.com/desktop/2006-08-03/1154571600d82844.html
    这里就是我要的答案,
    但是我的是服务器程序,没有窗口,
    不能获取窗口句柄,我该如何处理呢?
      

  3.   

    我的代码如下:
    #include <iostream>
    #include <windows.h>
    using namespace std;int main()
    {
        string str="这是我要发送的给另外一个进程字符串。";
        COPYDATASTRUCT myCopyDATA;
        myCopyDATA.cbData=str.size();//数据块长度
        myCopyDATA.lpData=&str;//待发送数据的首地址
        char * MessageName="SysLog";
        UINT msgID =  RegisterWindowMessage(MessageName);
        //cout<<msgID<<endl<<GetLastError()<<endl;
        BOOL pm = SendMessage((HWND)msgID, WM_COPYDATA, 0 ,(LPARAM)&myCopyDATA);
        cout<<pm<<GetLastError();//输出0 1400(窗口句柄无效)
    }输出的错误代码为1400(窗口句柄无效),怎么修改才能成功发送消息呢?