MFC创建半透明窗口

fkeujjpdc 2010-01-18 12:34:23
我想在我的程序中再创建一个小的窗口显示在屏幕的右下角,就像迅雷每次打开后弹出的那个透明窗口的广告一样,请问我要让哪个类作为这个小窗口的基类,具体如何实现啊,各位帮帮忙
...全文
644 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
艾雨伞 2011-12-09
  • 打赏
  • 举报
回复
HINSTANCE hInst = LoadLibrary("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->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}
这个方法是可以,但有限于Dialog。
yaoyue1019 2010-01-29
  • 打赏
  • 举报
回复
标题栏透明只要在属性里stles里把title bar的钩去掉就看不见了
wwgddx 2010-01-29
  • 打赏
  • 举报
回复
这样做有个问题就是窗口缩小时会有黑色阴影出现.
liyelun 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wwgddx 的回复:]
这样做有个问题就是窗口缩小时会有黑色阴影出现.
[/Quote]
我的没有黑色阴影的额
羽毛乱发 2010-01-29
  • 打赏
  • 举报
回复
顶个,留个脚印!

每天回帖即可获得10分可用分!
liyelun 2010-01-28
  • 打赏
  • 举报
回复
HINSTANCE hInst = LoadLibrary("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->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}
如果是在VC.NET中的话,上面的代码可以简化为
SetLayeredWindowAttributes(0,128,2);
Fireway2008 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fkeujjpdc 的回复:]
虽然这么做事可以,但是窗口好像不能用了,我用鼠标点击没反应啊

[/Quote]
怎么没反应?
控件还是在窗体之上的
klkvc386 2010-01-28
  • 打赏
  • 举报
回复
Mark
mycaibo 2010-01-28
  • 打赏
  • 举报
回复
上面的就可以,自己再试试吧
red-fly 2010-01-20
  • 打赏
  • 举报
回复
2楼的没错。
不过注意,你不能直接使用MFC头文件中定义的那个,因为在win2000(好像就是这个是分界线)之前的系统中没有这个接口,就不能调用
另外,需要注意窗口的样式,必需为OVERLAP类型
gudyn 2010-01-20
  • 打赏
  • 举报
回复
http://www.vckbase.com/code/findcode.asp?keyword=%CD%B8%C3%F7%B4%B0%BF%DA
fkeujjpdc 2010-01-19
  • 打赏
  • 举报
回复
好像不用那个GetProcAddress得到函数入口地址哦,MFC头文件里面好像已经定义了,我怎么直接调用也可以
fkeujjpdc 2010-01-19
  • 打赏
  • 举报
回复
虽然这么做事可以,但是窗口好像不能用了,我用鼠标点击没反应啊
哈利路亚1874 2010-01-18
  • 打赏
  • 举报
回复

::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hinstance = LoadLibrary("User32.dll");
if(NULL != hinstance)
{
typedef BOOL (WINAPI*MyFunc)(HWND,COLORREF,BYTE,DWORD);
MyFunc pFunc = NULL;
pFunc = (MyFunc)GetProcAddress(hinstance,"SetLayeredWindowAttributes");
if(pFunc != NULL)
{
pFunc(this->GetSafeHwnd(),0,128/*透明度0-255*/,2);
}
FreeLibrary(hinstance);
}

VC6.0下测试没问题
wwgddx 2010-01-18
  • 打赏
  • 举报
回复
如何实现标题栏和边框透明,客户区不透明?
coffee_machine 2010-01-18
  • 打赏
  • 举报
回复
楼上的正确,你就在if(fun)fun(this->GetSafeHwnd(),0,128,2); 这里调节他的透明度
gudyn 2010-01-18
  • 打赏
  • 举报
回复
CDialog做为基类,在OnInitDialog中添加使窗口透明的代码 主要是SetLayeredWindowAttributes函数的调用。
www.vckbase.com上的代码:

SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("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->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}
01一个~2 02 软件启动画面 03 不规则窗口的实现 04 多色窗口的实现 05 创建图标 06 以图片为背景的标题栏 07 工具窗口 08 切分窗口 09 显示多姿多彩的动画图标 10 智能滚动条 100 特效画线 11 在工具栏上绘制双把手 12 制作可扩展对话框 13 不规则形状按钮 14 窗口显示为显示背景图 15 奇妙的三维文字按钮 16 彩色按钮的实现 17 计算器 18 使用DIB制作动画按钮 19 Winamp样式的自动停靠对话框 20 在对话框中预览位图 21 文字的特殊显示效果 22 动画字体 23 旋转文本 24 渐隐渐显地显示图像 25 马赛克的实现 26 动画启动界面 27 透明的图像 28 用OpenGL实现简单动画 29 屏幕放大镜 30 绘制光源照射的球体 31 图像的缩放 32 半透明的三维物体 33 OpenGL中雾的应用 34 制作CD播放器 35 播放WAV文件 36 制作AVI动画按钮 37 用MFC制作屏幕保护程序 38 在OpenGL视图中绘制三维物体 39 透明的按钮 40 打开真彩色位图 41 彩色立方体 42 简易的Windows媒体播放器 43 制作MIDI播放器 44 场景反走样效果 45 制作景深效果 46 进行拷屏打印 47 纹理映射 48 多线程的实现 49 改变系统时间 50 滚动字幕的实现 51 获取和修改计算机名 52 获取文件属性 53 获取系统文件夹的路径 54 检测硬件设备 55 组合框的自动查询技术 56 实时捕捉光标位置 57 内存监测器 58 确定正在运行的进程 59 文件变更通知 60 重新启动和关闭计算机 61 字体选择组合框 62 设置显示器分辨率 63 Vc++中IO的应用 64 以二进制形式查看文件 65 串行化功能的实现 66 独特的读写工具 67 打开PCX格式文件 68 IP编辑器 69 服务器端应用程序 70 客户端应用程序 71 网络浏览器 72 映射网络驱动器 73 HTTP监控器 74 基于IE4组件的浏览器 75 基于STMP的邮件发送系统 76 监控POP3上的电子邮件收发 77 信箱应用程序接口的使用 78 超级链接的制作 79 数据库对话框 80 ISAPI身份鉴定过滤器 81 用电子表格显示数据库内容 82 动态创建数据源 83 在动态集中使用虚拟列表 84 使用数据访问对象的MSDI 85 气球式提示栏 86 具有不可选项的组合框 87 扩展静态文本控件 88 列表控件 89 树形控件 90 制作一个多功能的状态栏 91 组合框控件的多列显示 92 ATL&MFC构造COM自动化编程界面 93 ActiveX文档容器 94 创建向导程序 95 模式对话框 96 非模式对话框 97 颜色对话框的使用 98 四则运算的实现 99 多功能的画笔
《VC++.NET精彩百例》配套代码 [涉及平台] VC++.NET [作者] void [文件大小] 2969KB [更新日期] 2005-10-30 一、资源说明 第1章 界面编程 实例1 "欢迎"界面 实例2 动态字幕效果 实例3 透明窗体 实例4 静态切分窗口 实例5 滚动视图 实例6 字形窗口 实例7 多边形窗口 实例8 HTML浏览器 实例9 窗口的动画效果 实例10 实现动画图标 实例11 动态切分窗口 实例12 橡皮区矩形 实例13 多个定时器 实例14 椭圆窗体 第2章 图像和多媒体编程 实例 15 BMP文件浏览器 实例 16 图像的镜像处理 实例 17 图像的分割处理 实例 18 使用画笔 实例 19 使用画刷 实例 20 显示空心字 实例 21 显示渐进字体 实例 22 显示艺术字体 实例 23 马赛克效果 实例 24 MiDi播放器 实例 25 CD播放器 实例 26 纹理场景效果 实例 27 Bezier线框曲面 实例 28 输出旋转文本 第3章 对话框与控件编程 实例 29 树形控件 实例 30 列表控件 实例 31 时间控件 实例 32 彩色按钮 实例 33 组合框控件 实例 34 单选按钮和复选框 实例 35 工具栏编程 实例 36 状态栏编程 实例 37 对话框显示图片 实例 38 模式对话框 实例 39 非模式对话框 实例 40 位图按钮 实例 41 对话栏编程 第4章 文件与系统编程 实例 42 鼠标绘图 实例 43 键盘输入 实例 44 获取文件属性 实例 45 访问修改注册表 实例 46 设定计算机名称 实例 47 列举驱动器 实例 48 关闭操作系统 实例 49 查找文件 实例 50 获取磁盘空间 实例 51 读写文件 实例 52 系统进程检测 实例 53 获取系统信息 实例 54 获取文件夹路径 实例 55 设定系统时间 第5章 线程操作与COM组件编程 实例 56 创建线程 实例 57 线程间的通信 实例 58 使用自定义消息 实例 59 线程间的优先级 实例 60 线程间的同步 实例 61 重用C++对象 实例 62 创建永久对象 实例 63 MFC建立COM 实例 64 测试COM组件 第6章 网络和数据库编程 实例 65 聊天室服务器 实例 66 HTTP应用程序 实例 67 FTP应用程序 实例 68 HTTP服务器 实例 69 发送电子邮件 实例 70 接收电子邮件 实例 71 ATL Server Web 实例 72 DOA获取信息 实例 73 DAO数据库编程 实例 74 ADO访问数据库 第7章 OPENGL编程 实例 75 绘制对比矩形 实例 76 绘制直线 实例 77 绘制圆和椭圆 实例 78 绘制三角形 实例 79 缩放变换 实例 80 旋转变换 实例 81 平移变换 实例 82 绘制点 实例 83 OpenGL编程 实例 84 实现简单动画 实例 85 视口投影变换 实例 86 键盘控制图形 第8章 OLE和GDI+编程 实例 87 OLE容器 实例 88 保存OLE信息 实例 89 设置跟踪矩形 实例 90 显示多个OLE项 实例 91 ActiveX服务器 实例 92 插值模式 实例 93 图像区域平铺 实例 94 文字填充 实例 95 图形容器 实例 96 线帽组合 实例 97 半透明线条 实例 98 颜色再变换表 实例 99 旋转和扭曲图像 实例 100 显示垂直文本

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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