向各位高手请教有关一个问题,我想在VC上显示的一个对话框一样的东西,但对话框的外形是不规则的,它是以一张图片中的有用图像为外形。像WINDOW MEDIA PLAYER中有些外形一样,请各位高手帮帮忙,小弟不甚感激。
    如果有这方面的源码,请发到
    谢谢了!

解决方案 »

  1.   

    我看过CRgn,觉得能对我这个问题有用的就是CRgn::CreateFromPath(),但这个需要一个DC,现在我的问题是怎么从一张图片里得到这个具有不规则形状的DC
      

  2.   

    用此方法可以实现,我不久前就做了一个。
    首先自己创建一个窗口:
    Create(NULL,"窗口",WS_POPUP);
    然后在窗口的构造函数中加入如下代码:HDC hDC = CreateCompatibleDC(GetDC() ->GetSafeHdc());
    BeginPath(hDC);
    MoveToEx(hDC);
    LineTo(hDC,x1,y1);//此处的x1,y1是指不规则图形的边界坐标
    LineTo(hDC,x2,y2);//通过将不规则图形的边界的拐角坐标勾画出来
       .              
       .
       .
    LineTo(hDC,xn,yn);
    EndPath(hDC);HRGN m_cmain = PathToRegion(hDC);
    SetWindowRgn(m_cmain,TRUE);
    DeleteObject(m_cmain);然后在OnPain()中贴上图片
      

  3.   

    1 先建立一个原位图大小的RGN1
    2 根据位图的每个象素(x,y),临时建立一个1x1尺寸的RGN2, 然后用它来挖掉RGN1的对应位置(x,y)的区域.
    3 最后得到的RGN1就是被挖掉位图前景色部分的RGN,用此RGN就可以制作出镂空的对话框了。
      

  4.   

    抱歉,大家,我一时不小心,把邮箱写错了:(
    应该是:[email protected]
    之前少写个K。
      

  5.   

    给我也一份吧,我也想要
    [email protected]
      

  6.   

    ikok(小天庭) 
    已经说出了具体的实现过程了,关键在于你怎么生成CRgn了