创建
通过CreateWindowEx创建子窗口(注意窗口风格设置为WS_CHILD,并传入父窗口的句柄)
添加WS_EX_LAYERED属性
法一:在通过CreateWindowEx创建窗口时传入第一个传参。
法二:在窗口创建完成后调用SetWindowLong方法设置。
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
设置透明度
SetLayeredWindowAttributes(hWnd,0, alpha, LWA_ALPHA)
置顶子窗口
RECT rect;
GetClientRect(hWnd, &rect);
SetWindowPos(hWnd, HWND_TOP, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_SHOWWINDOW);
输出Text
使用TextOut输出即可。
若需要修改背景或字体颜色,需要在处理WM_PAINT消息上实现
SetTextColor :修改文字颜色; SetBkMode :可设置透明度。【TRANSPARENT】
令WS_EX_LAYERED属性在子窗口上生效(因为该特性是在WIN8以上才会支持)
修改.exe相对应的.manifest。(https://www.jianshu.com/p/60a76a7c8388
.manifest需添加内容:原文地址(https://www.cnblogs.com/snowbook/p/5363990.html)
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
</application>
</compatibility>
网友评论