有没有人知道如何分配一个窗口区域(WinForms中的SetwindowRgn或Control.Region )而不杀死在非客户区域的主题?
例如,运行以下命令会生成Windows 2000风格的非标题标题栏,边框等:
var form = new Form { Width=500,Height=500,BackColor = Color.Azure }; form.Text = "But soft,what light through yonder window breaks?"; var region = new Region (new Rectangle (Point.Empty,form.Size)); region.Exclude (new Rectangle (100,100,300,300)); form.Region = region; form.ShowDialog();
我猜这是与这个MSDN文章说:
只要一个窗口应用了一个非NULL区域(SetwindowRgn),UxTheme Manager假定这是一个专门的窗口,窗口将不会使用视觉样式。
为什么FindNextFile在Windows 7上失败
尝试挂钩到MessageBeep系统API
如何解决挂在CoUnitialize()上的进程?
从安全的angular度来看,pipe道是否被认为是危险的?
找出哪些显示驱动器当前正在运行
因此,UxThemes认为这是一个专门的窗口。 有没有办法明确告诉UxTheme Manager来主题窗口?
由于发现Windows.h的问题,无法设置openGL superBible的例子
Windows资源pipe理器备用数据streamshell扩展
WinZip是否有环境variables或等价物?
如何在WaitForSingleObject()上等待stdin的CancelSynchronousIo()?
Windows 7 / Vista进程pipe理 – 如何在长时间空闲时间后启动外部程序?
你的问题的答案是,你不能。
但是一个解决方法,在窗体中给你一个透明部分,就是将WS_EX_layered扩展窗口样式添加到窗体中。 然后,您可以告诉窗口管理器您想要使用色度键来使表单的一部分透明:
SetlayeredWindowAttributes( Form.Handle,// __in HWND hwnd,RGB(0,255,0),//green is the color key __in COLORREF crKey,//window is opaque otherwise __in BYTE bAlpha,LWA_COLORKEY //use color-key (rather than per-pixel alpha) __in DWORD dwFlags );
然后你可以把你的“透明”区域变成柠檬绿:
然后在运行时将是透明的:
更新:当我使用分层窗口有完全透明鼠标事件时,滴入到底下是什么。 注意“标志”图标突出显示:
也可以看看
窗口概览 – >窗口功能 – >分层窗口
扩展窗口样式
分层的Windows
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。