9 个解决方案
#1
第一个很好解决,确定位图后生成一个多边形,再设定窗口区域就行了
好像是用 CreatePolygonRgn, SetWindowRgn 两个函数搞定
第二个用 MDI 比较简单,否则要自己裁剪窗口,也可以但是很麻烦。
好像是用 CreatePolygonRgn, SetWindowRgn 两个函数搞定
第二个用 MDI 比较简单,否则要自己裁剪窗口,也可以但是很麻烦。
#2
SetWindowRgn();
#3
做不规则窗口的话可以用函数SetWindowRgn()函数,将一个构造好的区域赋给一个窗口,我这里有一个非常酷的播放器的界面,有源代码,想要就和我联系吧
#4
创建位图不规则窗口很容易,我这也有现成的实现函数。
要使子窗口不移出主窗口,我可以提供思路:
定义一个矩形(RECT),这个矩形位于子窗口中心区域,在Move事件中修改此矩形位置,并用RectInRgn判断其是否在主窗口区域,若超出则移动其回主窗口区域。
也可简单的定义子窗口中心点,用PtInRgn判断。
要使子窗口不移出主窗口,我可以提供思路:
定义一个矩形(RECT),这个矩形位于子窗口中心区域,在Move事件中修改此矩形位置,并用RectInRgn判断其是否在主窗口区域,若超出则移动其回主窗口区域。
也可简单的定义子窗口中心点,用PtInRgn判断。
#5
在www.codeguru.com上有几个关于创建不规则窗体的例子,你可以参考一下,主要使用两个函数
CreatePolygonRgn,SetWindowRgn
CreatePolygonRgn,SetWindowRgn
#6
关于不规则窗口的实现,我有一个简单的例子,没有实现位图功能.mail me your address.
#7
使用位图创建区域的源代码我有,已经放在我的网页上了http://rain.cnpick.com
或者http://breath.cnpick.com
函数名BmpToRegion
想要就来吧,或者给我发EMail
或者http://breath.cnpick.com
函数名BmpToRegion
想要就来吧,或者给我发EMail
#8
to breath
知道原理,只是没时间做,也给我一份,谢谢了先
知道原理,只是没时间做,也给我一份,谢谢了先
#9
多谢各位指点,小弟这里谢了!子窗口并不是在有Move事件时才超出主窗口,而是一直超出主窗口,关于这个问题我已解决了.我把原先所有的子窗口做成popup窗口就可以了.但还有两个问题我没弄明白:
1. 当我用GetWindowRgn得到窗口的区域后,用CRgn::PtInRegion 判断某点是否在该区域中时,发现该点明明在区域外,可CRgn::PtInRegion 却返回TRUE,这是怎么回事?如何解决?
2. 我在某窗口中按着鼠标键移出该窗口,在该窗口外松开鼠标键,该窗口中的控件还是处于鼠标键按下时的状态,并且我发现当按着鼠标在窗口中移动时,不能捕获WM_MOUSEMOVE消息,这问题该如何解决?
多谢各位赐教!
1. 当我用GetWindowRgn得到窗口的区域后,用CRgn::PtInRegion 判断某点是否在该区域中时,发现该点明明在区域外,可CRgn::PtInRegion 却返回TRUE,这是怎么回事?如何解决?
2. 我在某窗口中按着鼠标键移出该窗口,在该窗口外松开鼠标键,该窗口中的控件还是处于鼠标键按下时的状态,并且我发现当按着鼠标在窗口中移动时,不能捕获WM_MOUSEMOVE消息,这问题该如何解决?
多谢各位赐教!
#1
第一个很好解决,确定位图后生成一个多边形,再设定窗口区域就行了
好像是用 CreatePolygonRgn, SetWindowRgn 两个函数搞定
第二个用 MDI 比较简单,否则要自己裁剪窗口,也可以但是很麻烦。
好像是用 CreatePolygonRgn, SetWindowRgn 两个函数搞定
第二个用 MDI 比较简单,否则要自己裁剪窗口,也可以但是很麻烦。
#2
SetWindowRgn();
#3
做不规则窗口的话可以用函数SetWindowRgn()函数,将一个构造好的区域赋给一个窗口,我这里有一个非常酷的播放器的界面,有源代码,想要就和我联系吧
#4
创建位图不规则窗口很容易,我这也有现成的实现函数。
要使子窗口不移出主窗口,我可以提供思路:
定义一个矩形(RECT),这个矩形位于子窗口中心区域,在Move事件中修改此矩形位置,并用RectInRgn判断其是否在主窗口区域,若超出则移动其回主窗口区域。
也可简单的定义子窗口中心点,用PtInRgn判断。
要使子窗口不移出主窗口,我可以提供思路:
定义一个矩形(RECT),这个矩形位于子窗口中心区域,在Move事件中修改此矩形位置,并用RectInRgn判断其是否在主窗口区域,若超出则移动其回主窗口区域。
也可简单的定义子窗口中心点,用PtInRgn判断。
#5
在www.codeguru.com上有几个关于创建不规则窗体的例子,你可以参考一下,主要使用两个函数
CreatePolygonRgn,SetWindowRgn
CreatePolygonRgn,SetWindowRgn
#6
关于不规则窗口的实现,我有一个简单的例子,没有实现位图功能.mail me your address.
#7
使用位图创建区域的源代码我有,已经放在我的网页上了http://rain.cnpick.com
或者http://breath.cnpick.com
函数名BmpToRegion
想要就来吧,或者给我发EMail
或者http://breath.cnpick.com
函数名BmpToRegion
想要就来吧,或者给我发EMail
#8
to breath
知道原理,只是没时间做,也给我一份,谢谢了先
知道原理,只是没时间做,也给我一份,谢谢了先
#9
多谢各位指点,小弟这里谢了!子窗口并不是在有Move事件时才超出主窗口,而是一直超出主窗口,关于这个问题我已解决了.我把原先所有的子窗口做成popup窗口就可以了.但还有两个问题我没弄明白:
1. 当我用GetWindowRgn得到窗口的区域后,用CRgn::PtInRegion 判断某点是否在该区域中时,发现该点明明在区域外,可CRgn::PtInRegion 却返回TRUE,这是怎么回事?如何解决?
2. 我在某窗口中按着鼠标键移出该窗口,在该窗口外松开鼠标键,该窗口中的控件还是处于鼠标键按下时的状态,并且我发现当按着鼠标在窗口中移动时,不能捕获WM_MOUSEMOVE消息,这问题该如何解决?
多谢各位赐教!
1. 当我用GetWindowRgn得到窗口的区域后,用CRgn::PtInRegion 判断某点是否在该区域中时,发现该点明明在区域外,可CRgn::PtInRegion 却返回TRUE,这是怎么回事?如何解决?
2. 我在某窗口中按着鼠标键移出该窗口,在该窗口外松开鼠标键,该窗口中的控件还是处于鼠标键按下时的状态,并且我发现当按着鼠标在窗口中移动时,不能捕获WM_MOUSEMOVE消息,这问题该如何解决?
多谢各位赐教!