给窗口画边框

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

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

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

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

现在看看有哪位大师 大姐 有高招啊 指点1,2
...全文
213 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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? 恐怕不行啊 我们的软件是个安全软件。 我原以为给别人程序的窗口画个边很容易,谁知道 做起来 并不简单 总是有问题。
  • 打赏
  • 举报
回复
一般不要标题栏的自己实现 最大化 最小化 按钮。。
  • 打赏
  • 举报
回复
先画窗体的形状 。。 然后再画边框 一般贴出阴影需要 png 图片
allenhiman 2013-09-13
  • 打赏
  • 举报
回复
这个问题真的让我比较纠结了 虽然我们的产品是赚吆喝的 但是也不想这样糊弄 哪位大师 能给个点子啊
看不见的裂痕 2013-09-12
  • 打赏
  • 举报
回复
1.aero风格下绘制CWindowDC的边框,你触发的是WM_NCPAINT吧? 2.可以尝试把Aero关闭。载入 dwmapi.h文件 DwmEnableBlurBehindWindow 关闭 DwmEnableComposition 关闭

15,980

社区成员

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

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