SDK编程``透明窗口的问题``

Azreal_Y 2004-10-18 01:51:07
在发这问题前``我在搜过一吓(在VC版里)``没找到我的答案``在网上也找了一吓``都是WIN2000/XP的透明窗口的实现``有没有一种既可以在WIN98下`也可以在WIN2000/XP实现透明窗口的方法?会的朋友请说说方法``谢谢!还有``我是用SDK编程的``
...全文
144 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
newman0708 2004-10-19
  • 打赏
  • 举报
回复
Azreal_Y 2004-10-19
  • 打赏
  • 举报
回复
顶`
Azreal_Y 2004-10-18
  • 打赏
  • 举报
回复
我用了mynamelj(风之羽翼)你给的代码``程序能透明``
问题1
在程序一运行时``有一部分是比较暗的``但那是透明的``当我改变窗体大小时,那部分才会变成我所设置的值的那种透明``

问题2
程序运行时,总会闪一闪``,当从别的活动窗口转到本窗口时,也会闪一闪``

还有一点``就是在最大化时和还原时,会比较不用透明窗口时慢一点``这个能理```呵呵``


综合以上的问题``请问有没有更好的透明窗口的实现``
Azreal_Y 2004-10-18
  • 打赏
  • 举报
回复
是的``我在WIN2000下能行``但是代码不是很懂``请注释一吓``
kugou123 2004-10-18
  • 打赏
  • 举报
回复
SetLayeredWindowAttributes此方法只适合WIN2000/XP,WIN98下不支持。
Azreal_Y 2004-10-18
  • 打赏
  • 举报
回复
mynamelj(风之羽翼)
把你的代码注释一吓好吗``看得不是很懂``谢谢``
huwei001982 2004-10-18
  • 打赏
  • 举报
回复
自已用 alpha混合绘制吧
kugou123 2004-10-18
  • 打赏
  • 举报
回复
98下面没有那个函数的。
可能只有自己重绘窗口。
mynamelj 2004-10-18
  • 打赏
  • 举报
回复
HWND hwnd; //To your window handle.

SetWindowLong(hwnd,GWL_EXSTYLE,
GetWindowLong(hwnd,GWL_EXSTYLE)^0x80000);

HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
int i=0;
//Get SetLayeredWindowAttributes function point.
fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");
if(fun)
{

fun(hwnd,NULL,100,2);

}
FreeLibrary(hInst);
}
Visual_Li 2004-10-18
  • 打赏
  • 举报
回复
。。
hhjdk967 2004-10-18
  • 打赏
  • 举报
回复
好象98不可以使用
hhjdk967 2004-10-18
  • 打赏
  • 举报
回复
BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);

Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.

一些常量:
WS_EX_LAYERED = 0x80000;
LWA_ALPHA = 0x2;
LWA_COLORKEY=0x1
其中dwFlags有LWA_ALPHA和LWA_COLORKEY
LWA_ALPHA被设置的话,通过bAlpha决定透明度.
LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示.
注:要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧sdk也没有的).

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧