具体问题如下:
在我的ACTIVEX控件中,需要加入3个子窗口(用于可以移动的标记等),现在我需要将其中一个子窗口透明化并且可以让主窗口来重绘子窗口区域,于是用到了将主ACTIVEX控件的CTRL窗口的窗口样式取消设置WS_CLIPCHILDREN样式,代码如下
::SetWindowLong(this->m_hWnd,GWL_STYLE,
::GetWindowLong(this->m_hWnd,GWL_STYLE)^WS_CLIPCHILDREN);
现在用这样的方式我成功实现了子窗口的透明,但是出现一个问题,在其中一个子窗口区域重绘的时候(既其中一个子窗口移动时),3个子窗口都会重绘,导致另外两个没有在移动的子窗口出现闪烁的现象,求教原因及解决方法~~之前那个帖子开出,有朋友给出解决方法:
保留WS_CLIPCHILDREN
让透明的控件自己保存父窗口的背景,重绘时以此作为子控件的背景
现在我想知道的就是,如何去做呢?我试过在OnEraseBkgnd去获取父窗口的DC,然后用此DC在子窗口上BitBlt,但是完全无法实现啊,现在继续求教,最好有具体做法~~谢谢~~
在我的ACTIVEX控件中,需要加入3个子窗口(用于可以移动的标记等),现在我需要将其中一个子窗口透明化并且可以让主窗口来重绘子窗口区域,于是用到了将主ACTIVEX控件的CTRL窗口的窗口样式取消设置WS_CLIPCHILDREN样式,代码如下
::SetWindowLong(this->m_hWnd,GWL_STYLE,
::GetWindowLong(this->m_hWnd,GWL_STYLE)^WS_CLIPCHILDREN);
现在用这样的方式我成功实现了子窗口的透明,但是出现一个问题,在其中一个子窗口区域重绘的时候(既其中一个子窗口移动时),3个子窗口都会重绘,导致另外两个没有在移动的子窗口出现闪烁的现象,求教原因及解决方法~~之前那个帖子开出,有朋友给出解决方法:
保留WS_CLIPCHILDREN
让透明的控件自己保存父窗口的背景,重绘时以此作为子控件的背景
现在我想知道的就是,如何去做呢?我试过在OnEraseBkgnd去获取父窗口的DC,然后用此DC在子窗口上BitBlt,但是完全无法实现啊,现在继续求教,最好有具体做法~~谢谢~~
解决方案 »
- UDP编程
- 请问怎么用ICMP打洞啊?
- lib文件中该如何使用MFC?
- <监测时没错,但连接时有错,怎么回事?>
- 高分求解
- 在线...LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
- 用ODBC API怎么进行记录插入??
- 自己健的類為什麼會出錯
- **请问高手!!我在CView上放置了一个ActiveX控件,该控件响应鼠标右键消息,我如何使他不响应,而把响应权交给我的View???***
- 怎样将控件设置为透明?谢谢!
- Release函数的里面为什么要"delete this"? 这不会导致崩溃吗?
- 流行的报表开发工具
不是,关键是,我现在主窗口上有3个子窗口,如果取消设置WS_CLIPCHILDREN,移动的时候3个窗口都会进行重绘,就会造成另外两个不动的窗口闪烁,如此就会影响很大