在父窗口上创建了一个子窗口,父窗口和子窗口都是CWnd的派生类,子窗口的样式是WS_CHILD | WS_VISIBLE,子窗口的背景画刷是NULL,意思是透明,让父窗口去擦除背景, 子窗口上画了一个多边形,我想的是:当鼠标点击在这个多边形上的时候子窗口处理事件,当鼠标点在多边形外面的时候(位置还是在子窗口单位内),让父窗口去处理这个事件,大家觉得应该怎样做呀

解决方案 »

  1.   

    在子窗口中用CreatePolygonRgn();建立多边形选区
    然后在
    OnMouseMove(UINT nFlags, CPoint point) 
    {
        
        iFlagIn=rgn.PtInRegion(point.x,point.y);

    }这样判断鼠标是否在选区内,若是刚让子窗口去处理事件,若不在选区内让父窗口去处理这个事件.
      

  2.   

    图形很复杂的化,可以考虑一下,用颜色的不同来区分,让父窗口还是子窗口来处理,像这样
    bmpSubmarine->GetObject(sizeof(BITMAP),&bm);
    pxsub  = new unsigned char[bm.bmHeight*bm.bmWidthBytes];//取得潜艇位图的信息存入数组;
    bmpSubmarine->GetBitmapBits(bm.bmHeight*bm.bmWidthBytes,pxsub);
    for(i=0;i<bm.bmHeight*bm.bmWidthBytes;i+=3)
    {
    if(pxsub[i]!=0&&pxsub[i+1]!=0&&pxsub[i+2]!=0)
    {
    }