伊苏8王都上锁的宝箱:VC窗口透明的方法 - 日志 - 李鸿儒 - 慧聪社会 - shehui.hc360.com

来源:百度文库 编辑:偶看新闻 时间:2024/03/28 17:26:34
已有 465 次阅读  2006-06-07 18:08

 VC窗口透明的方法
VC窗口透明的方法(SetLayeredWindowAttributes)。是一种比较好的办法。
在WINDOWS版中要要求5.0以上就可以,不知道为什么微软件要求这样做。
不过在WINDOWS VISTA中将经常使。

直接使用源代码吧:

// 添加透明扩展样式
 SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE)^0x80000);

// 添加库
 HINSTANCE hInst = LoadLibrary("User32.DLL");


 if(hInst)
 {
  typedef BOOL (WINAPI *ShowLayer)(HWND,COLORREF,BYTE,DWORD);
  ShowLayer fun = NULL;

  // 读取函数指针
  fun = (ShowLayer)GetProcAddress(hInst, "SetLayeredWindowAttributes");
  if (fun)
   fun(this->GetSafeHwnd(), 0, 235, 2);
  FreeLibrary(hInst);
 }

// 函数原型

BOOL SetLayeredWindowAttributes(
 HWND hwnd, // 窗口
 COLORREF crKey, // 颜色键
 BYTE bAlpha, // alpha值
 DWORD dwFlags // 透明方法
);
 

//透明方法只有两种:LWA_COLORKEY=1为使用颜色键。LWA_ALPHA=2为使用alpha值。
//两种值只能取一种。前面的值就是实际值