首页 > 电脑专区 > QQ软件 >

如何打造个性QQ,让其窗体变透明

来源:互联网 2023-02-20 23:37:09 346

嘿嘿~近日突然发现了一个好玩的函数,现在就给大家介绍介绍(砖头飞过..)UNc办公区 - 实用经验教程分享!

这个函数的名字叫:SetLayeredWindowAttributes 从字面上意思来理解应该是”设置窗口属性”的吧!可是查了下俺老版本的MSDN,居然找不到这个函数..这个汗啊,从网上查知是Win2000/xp以后才有的功能.所以可以先查查自己的Msdn是否可以找到,如果找到,哈哈,那就恭喜你啦,不用这么麻烦的使用,直接调用函数就行了!UNc办公区 - 实用经验教程分享!

工具/原料

  • vc 6.0平台,QQ软件,函数

方法/步骤

  • 1

    首先了解一下函数原型:UNc办公区 - 实用经验教程分享!

    BOOL SetLayeredWindowAttributesUNc办公区 - 实用经验教程分享!

    (UNc办公区 - 实用经验教程分享!

    HWND hwnd, // handle to the layered windowUNc办公区 - 实用经验教程分享!

    COLORREF crKey, // specifies the color keyUNc办公区 - 实用经验教程分享!

    BYTE bAlpha, // value for the blend functionUNc办公区 - 实用经验教程分享!

    DWORD dwFlags // actionUNc办公区 - 实用经验教程分享!

    );UNc办公区 - 实用经验教程分享!

    WS_EX_LAYERED = 0x80000; //扩展风格  UNc办公区 - 实用经验教程分享!

    LWA_ALPHA = 0x2; //dwFlags里的标志设置透明如果此参数设置,则crKey不起作用  UNc办公区 - 实用经验教程分享!

    LWA_COLORKEY=0x1 //dwFlags里的标志设置色彩如果此参数设置,则bAlpha不起作用UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

  • 2

    然后建个基于对话框的程序, 把以下代码放入OnInitDialog()中UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

  • 3

    SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE) | 0x80000);//添加扩展风格WS_EX_LAYERED=0x80000UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    HINSTANCE hIns;UNc办公区 - 实用经验教程分享!

    hIns=LoadLibrary("User32.dll"); //这个函数在这个库里UNc办公区 - 实用经验教程分享!

    if(hIns)UNc办公区 - 实用经验教程分享!

    {UNc办公区 - 实用经验教程分享!

    typedef BOOL (WINAPI*SetAlpha)(HWND,COLORREF,BYTE,DWORD);UNc办公区 - 实用经验教程分享!

    //这是一个函数指针,是为了获得咱们需要的函数的地址。UNc办公区 - 实用经验教程分享!

    SetAlpha Myfun;UNc办公区 - 实用经验教程分享!

    Myfun=NULL;UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    Myfun=(SetAlpha)GetProcAddress(hIns,"SetLayeredWindowAttributes");UNc办公区 - 实用经验教程分享!

    //获取这个函数的地址UNc办公区 - 实用经验教程分享!

    if(Myfun)UNc办公区 - 实用经验教程分享!

    Myfun(GetSafeHwnd(),RGB(0,0,0),150,2);UNc办公区 - 实用经验教程分享!

    //150为透明的值,上限为255UNc办公区 - 实用经验教程分享!

    //可以(255*60/100)这样设置,不透明度就为60%UNc办公区 - 实用经验教程分享!

    FreeLibrary(hIns);UNc办公区 - 实用经验教程分享!

    }UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

  • 3相关内容未经许可获取自百度经验
  • 4

    好了,现在运行程序进行编译!UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

  • 5

    呵呵~我们来为他多加点功能吧,比如设置别的应用程序也成透明的,这应该嘛好玩的,我们就以QQ登录窗口来试验一把吧!此时的字是看不见的。UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

  • 6

    UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    这里我们需要用到一个函数:FindWindow();UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    原型声明:UNc办公区 - 实用经验教程分享!

    HWND FindWindowUNc办公区 - 实用经验教程分享!

    (UNc办公区 - 实用经验教程分享!

    LPCTSTR lpClassNameUNc办公区 - 实用经验教程分享!

    LPCTSTR lpWindowNameUNc办公区 - 实用经验教程分享!

    )UNc办公区 - 实用经验教程分享!

    这里简单介绍一下,这个函数就是查找某个程序窗口的句柄。我们用他来寻找QQ的窗口。UNc办公区 - 实用经验教程分享!

    当第一个参数为某个指定的值时,第二个参数为NULL就可以,反之也是。UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    OK,开始我们的工作吧!UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    在CXXXDlg类中加个WM_CREATE,WM_TIMER消息,在OnCreate()中加入如下代码:UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    SetTimer(1,10,NULL);UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    在OnTimer()函数中加入如下代码:UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    //如果机器上没有QQ,则更改对象咱们改为寻找系统自带的计算器。UNc办公区 - 实用经验教程分享!

    // HWND hwnd=::FindWindow(“SciCalc”,NULL);UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    //查找QQ登录窗口的句柄UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    HWND hwnd=::FindWindow(NULL,"QQ用户登录");//注意这里需要使用全局函数::UNc办公区 - 实用经验教程分享!

    if(hwnd)UNc办公区 - 实用经验教程分享!

    {UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE) | 0x80000);UNc办公区 - 实用经验教程分享!

    HINSTANCE hIns;UNc办公区 - 实用经验教程分享!

    hIns=LoadLibrary("User32.dll");UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    if(hIns)UNc办公区 - 实用经验教程分享!

    {UNc办公区 - 实用经验教程分享!

    typedef BOOL (WINAPI*SetAlpha)(HWND,COLORREF,BYTE,DWORD);UNc办公区 - 实用经验教程分享!

    SetAlpha Myfun;UNc办公区 - 实用经验教程分享!

    Myfun=NULL;UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    Myfun=(SetAlpha)GetProcAddress(hIns,"SetLayeredWindowAttributes");UNc办公区 - 实用经验教程分享!

    if(Myfun)UNc办公区 - 实用经验教程分享!

    SetWindowLong(hwnd,GWL_EXSTYLE,UNc办公区 - 实用经验教程分享!

    GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE) | 0x80000);UNc办公区 - 实用经验教程分享!

    //设置让QQ登录窗口也有这种风格,此时句柄为QQ窗口句柄 hwndUNc办公区 - 实用经验教程分享!

    Myfun(hwnd,RGB(0,0,0),150,2);UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    FreeLibrary(hIns);UNc办公区 - 实用经验教程分享!

    }UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    KillTimer(1);//如果找到,让定时器停止工作!(杀死时间,呵呵!)UNc办公区 - 实用经验教程分享!

    //MessageBox("时间已被停止");UNc办公区 - 实用经验教程分享!

    }UNc办公区 - 实用经验教程分享!

    UNc办公区 - 实用经验教程分享!

    大功告成!现在我们就来测试一下吧,打开你的QQ,看看是不是也变透明啦~怎么样学会了吧!!!UNc办公区 - 实用经验教程分享!

    如何打造个性QQ,让其窗体变透明?UNc办公区 - 实用经验教程分享!

  • 注意事项

    • 使用平台是VC6.0,还要注意函数的参数的设置。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!UNc办公区 - 实用经验教程分享!


    标签: QQ打造个性透明

    上一篇:qq主显帐号设置 下一篇:怎么更换QQ头像
    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码