给窗口画边框

allenhiman 2013-09-12 02:05:01
这是我们已经发布的产品的需求
我们的产品是个沙盒程序 凡是运行在沙盒里的程序 如果有弹出窗口 就给弹出窗口四周画个绿边 当然了 也不用太严谨,比如它是异型的 我们仍然画成方的就可以了。
我们现在给运行在沙盒里的程序都注入了一个xxx.dll,那么画绿框的工作 自然是在这个xxx.dll里实现了。

#1 最开始采用的是勾住弹出窗口的WM_PAINT消息 然后找到窗口dc 然后用GDI描边。 如果没有win7的areo风格的话 一切正常,可aero风格下不管用。

#2 也就是现在使用的方法,额外创建一个镂空的弹出窗口套住原程序的弹出窗口 然后响应一些事件 随动 随改变大小等等

虽然#2基本解决问题 但总是不理想啊 由于不能设定为父子关系(子窗口没法镂空) 有时候会出现zorder的问题,还有其它的一些不如意的地方。

现在看看有哪位大师 大姐 有高招啊 指点1,2
...全文
150 点赞 收藏 9
写回复
9 条回复
allenhiman 2013年10月17日
引用 8 楼 lgstudyvc 的回复:
嘿嘿,areo下也管用的, 当初我也以为不管呢
如何管用捏?
回复 点赞
lgstudyvc 2013年10月16日
嘿嘿,areo下也管用的, 当初我也以为不管呢
回复 点赞
向立天 2013年10月16日
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
回复 点赞
allenhiman 2013年09月16日
算了 我这需求 看起来很小众 没人儿遇到过啊
回复 点赞
allenhiman 2013年09月13日
对是WM_NCPAINT 关闭Aero? 恐怕不行啊 我们的软件是个安全软件。 我原以为给别人程序的窗口画个边很容易,谁知道 做起来 并不简单 总是有问题。
回复 点赞
zhangyihu321 2013年09月13日
一般不要标题栏的自己实现 最大化 最小化 按钮。。
回复 点赞
zhangyihu321 2013年09月13日
先画窗体的形状 。。 然后再画边框 一般贴出阴影需要 png 图片
回复 点赞
allenhiman 2013年09月13日
这个问题真的让我比较纠结了 虽然我们的产品是赚吆喝的 但是也不想这样糊弄 哪位大师 能给个点子啊
回复 点赞
傻X 2013年09月12日
1.aero风格下绘制CWindowDC的边框,你触发的是WM_NCPAINT吧? 2.可以尝试把Aero关闭。载入 dwmapi.h文件 DwmEnableBlurBehindWindow 关闭 DwmEnableComposition 关闭
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7973

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告