怎样设置窗口全透明,而鼠标不穿透?该如何处理

怎样设置窗口全透明,而鼠标不穿透?
   我在做一个二维图形绘图程序。是一个单文档程序。
 
    但是我需要一个视图A来显示已经画好的图形。还需要另外一个全透明视图B来和用户交换(比如显示拖动和绘图过程的动作)。
   而且要让用户感觉就像在A上直接绘图。A是单文档的视图,B是我自己创建的一个窗口,全透明。覆盖在A视图上,大小和A一样。
    你可能会问为什么我要把绘图的显示和交互分开呢。因为这样比较好实现绘图过程中的一些操作。

        之前我把B窗口设置为全透明,但是这样B就鼠标穿透了。响应不了鼠标消息,也就无法和用户交互了。怎样才能把B窗口设为全透明而又能响应鼠标消息呢?

       我只想让A用来显示,而B用来交互。可惜B鼠标穿透了。把A覆盖到B的前面来就好了。可惜做不到。

      所以还是想一想:怎样才能把B窗口设为全透明而又能响应鼠标消息呢?

------解决方案--------------------
透明度提高到鼠标不穿透但又看上去是透明的程度即可,不要全透明
------解决方案--------------------
透明度为1 肉眼是看不出来的
------解决方案--------------------
你不说你都设置为全透明了吗 只要是popup类型的窗口 都可以设置透明度
------解决方案--------------------
穿透与否和系统彩色位深有关系,但也不至于100的时候还穿透

实在不行就去掉透明度,通过截图贴图到窗体的方式来实现伪透明,去掉窗体的边框和标题栏,可以以假乱真
------解决方案--------------------
引用:
Quote: 引用:

直接在内存DC上画好 在拷贝到设备DC上 你的设计思想有问题

我知道可以。但是我要实现交互绘图过程中的动画效果,显示和交互分开比较好


响应窗口A的WM_NCHITTEST消息,直接返回HTTRANSPARENT 
试试行不行

------解决方案--------------------
真是奇葩的设计,显示和操作分开实在想不出方便控制在哪,本质讲操作操作最终是依赖于你的数据逻辑和数据,和显示出来的东西是一点都没有关系,另外使用透明窗口实际是一个很浪费运行效率的处理
------解决方案--------------------
B不穿透必须满足以下条件:
1. B的透明度不为0
2. B不能有WS_EX_TRANSPARENT
3. B的WM_NCHITTEST消息不应返回HTTRANSPARENT (需要返回HTCLIENT)