VC中实现透明窗体--SetLayeredWindowAttributes

      在VC中有一实现窗口透明的函数-----SetLayeredWindowAttributes(在5.0及以后版本中有)

函数原型

BOOL SetLayeredWindowAttributes(         
    HWND hwnd,               //想要实现透明的窗体句柄
    COLORREF crKey,       //颜色   
    BYTE bAlpha,             //Alpha值,取值范围是[0,255]
    DWORD dwFlags       //LWA_COLORKEY(=1)表示使用透明色; LWA_ALPHA(=2)表示使用 Alpha值
);

例子:
1、新建一基于对话框的MFC程序-----TransparentWindow

2、在 CTransparentWindowDlg  类的  OnInitDialog() 函数中加入以下代码(在 return TRUE; 前面)

 SetWindowLong(this->m_hWnd,GWL_EXSTYLE,GetWindowLong(this->m_hWnd,GWL_EXSTYLE)^0x80000);
 HINSTANCE hInst = LoadLibrary(_T("User32.DLL"));
 if(hInst) 
 { 
  typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);  
 MYFUNC fun = NULL;  //取得SetLayeredWindowAttributes函数指针 
 fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); 
 if(fun) 
 {  
      fun(this->m_hWnd,0,128,2); 
  } 
 FreeLibrary(hInst); 
}

3、编译、运行完成

posted @ 2009-07-27 20:38  trace007  阅读(1718)  评论(0编辑  收藏  举报