有一个vector<draw> my
请问COPYDATASTRUCT应该怎么赋值?class draw{
public:
int m_Number;
BOOL b_Fill;
POINT* m_PointList;
}draw类如上,是全局变量,这样传指针的时候不会丢失吧?

解决方案 »

  1.   

    只要两边是一样的定义,一样的加速因子就可以。如:
    draw ob;
    COPYDATASTRUCT cpData;
    cpData.dwData = 1;
    cpData.cbData = sizeof(ob);
    cpData.lpData = &ob;
    ::SendMessage(hWndTarget , WM_COPYDATA , (WPARAM)m_hWnd , (LPARAM)&cpData);vector我没用过,不知怎么取地址,但道理是一样的。
      

  2.   

    我们知道vector分为本体和存储体如果用cpData.lpData = &my,那么传过去是只是本体,大概20个字节,包括allocator,fist(就是my.begin()),last等我没有试验过,你可以尝试
    cpData.lpData = my.begin()._ptr,
    cpData.cbData = my.size()*sizeof(draw);当然有个前提是,把class draw里的POINT* m_PointList改成POINT[] m_pPointList; 否则传过去的只是一个指针,指针的地址是发送进程的地址,在接收进程里没有任何意义。