我想做一个“透明”的界面程序。我先打开一个其它的图片A,然后运行这个程序(如B),可以“透看”到图片A;这样B程序上添加上长度的刻度时,可以对图片A进行测量、分析。打个比方:我们可以透过“透明的”玻璃窗户,看到外面的景色;这里,外面的景色指图片A,“透明的”玻璃窗户指要开发的“透明”的界面程序。请有过图像开发经验的高手们指点一二,有相关的源代码参考也请介绍。谢谢!

解决方案 »

  1.   

    CWnd::SetLayeredWindowAttributes  BOOL SetLayeredWindowAttributes(
       COLORREF crKey,
       BYTE bAlpha,
       DWORD dwFlags
    );
      

  2.   

    上面两个是窗体透明,在win2000以后均支持
      

  3.   

    还有TransparentBlt,UpdateLayeredWindow.
      

  4.   

    这个是教你做一个透明的窗口,透明度可调节
    首先,用生成向导建立个基于对话框的程序框架,取名为PartTransparent    第二,重写BOOL CPartTransparentDlg::OnInitDialog(),也就是重写,对话框类的OnInitDialog()这个函数,在里面,return TRUE;前面加入下面的代码:     SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
    HINSTANCE hInst = LoadLibrary("User32.DLL");
    if (hInst)
    {
       typedef BOOL (WINAPI * MYFUNC)(HWND,COLORREF,BYTE,DWORD);
       MYFUNC fun = NULL;   fun = (MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");
       if (fun)
        fun(this->GetSafeHwnd(),0,128,2);
       FreeLibrary(hInst);
      
    }其中fun(this->GetSafeHwnd(),0,128,2);修改窗口的透明度,值越接近255越不透明。
      

  5.   

    谢谢了,wandoutoushu的代码可用, 结贴!