VC++实现控制窗体透明本

终于又掌握了几个API,这几个API很常用。。。每掌握一个API,我都感觉到爽到极点

  主角函数:

  BOOL SetLayeredWindowAttributes(

  HWND hwnd,      // 应用目标窗口的句柄

  COLORREF crKey, // 掩码的颜色,可以用RGB(r,g,b)来指定

  BYTE bAlpha,    // 掩码颜色部分的Alpha值,0是全透明,255是完全不透明

  DWORD dwFlags   // 透明方式

  );

  这个函数只在Windows2000及以上版本才支持。MSDN对要求的描述如下

  <Requirements>

  Windows NT/2000/XP: Included in Windows 2000 and later.

  Windows 95/98/Me: Unsupported.

  Header: Declared in Winuser.h; include Windows.h.

  Library:  User32.lib.

  所以调用前需引用User32.DLL动态链接库!

  声明一个自定义设置窗体透明的过程函数:

  void chuangtitouming(char jubing[100], int toumingdu);

  //参数一:窗体标题

  //参数二:透明度

  激活窗体透明函数:

  chuangtitouming("zhuru",100);

  //参数一:窗体标题

  //参数二:透明度

  //**********************************************************************************************************

  //***************************底部加入自定义设置窗体透明的函数过程:***********************

  void chuangtitouming(char jubing[100], int toumingdu)

  {

  //**************************************************************

  //*****************引用动态链接库user32.dll***********************

  typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hwnd,

  COLORREF crKey,

  BYTE bAlpha,

  DWORD dwFlags); //声明指向函数的指针变量

  lpfnSetLayeredWindowAttributes SetLayeredWindowAttributes; //用这个函数的指针声明变量

  HMODULE hUser32 = GetModuleHandle("user32.dll"); //声明用于存放动态链接库句柄的变量

  SetLayeredWindowAttributes = (lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32,"SetLayeredWindowAttributes");

  //把得到动态链接库DLL文件中的函数地址赋值给变量SetLayeredWindowAttributes

  //**************************************************************

  //*****************窗体透明设置过程***********************

  #define LWA_COLORKEY  0x00000002  //设置透明风格为2 窗体透明

  #define WS_EX_LAYERED  0x00080000  //窗口样式:带系统菜单的窗口

  HWND a;

  int b;

  a = ::FindWindow(NULL,jubing);   //获取窗口句柄

  b = ::GetWindowLong(a, GWL_EXSTYLE);  //在该程序中要不要都无所谓的

  //获得窗口风格

  //参数一:窗口句柄

  //参数二:获取的风格种类,扩展窗口风格,可翻阅MSND里的窗口样式GWL_EXSTYLE

  ::SetWindowLong(a, GWL_EXSTYLE, b | WS_EX_LAYERED);

  //设置窗体风格

  //参数一:窗口句柄

  //参数二:指定设置窗体的值,选择GWL_EXSTYLE表示设定扩展窗口风格。

  //参数三:将设定窗口风格的值 ,可翻阅MSND里的窗口样式GWL_EXSTYLE

  SetLayeredWindowAttributes(a , 0, toumingdu, LWA_COLORKEY);

  //设置窗体透明

  //参数一:窗口句柄

  //参数二:掩码的颜色,可以用RGB(r,g,b)来指定 ,不设置可为0

  //参数三:透明度值,0是全透明,255是完全不透明

  //参数四:透明风格。设为 1是标题透明, 2 为窗体透明, 3为窗体和标题共同透明

  }

本文来自 “恨雪技术网”,转载请以链接形式注明出处,地址:http://www.henxue.net/tech/devdeloper/vc/2010-02-19/1331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值