如何实现箭头,三角形窗口?最好给个例子 派生一个按钮类,重载它的drawitem函数,用SetWindowRgn改变按钮的形状就行了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to adphone 可能我说的有点问题,补充一下将这些箭头和三角形作为一个窗口对象放在大的窗口中。 方法1:用CDC绘制,记住它们的位置,在鼠标事件中判断。(占用系统资源少,但是代码复杂)。方法二:作三角形的窗口。(占用系统资源多,易于实现)。可以使用新的SDK函数SetWindowRgn。该函数将绘画和鼠标消息限定在窗口的一个指定的区域,实际上使窗口成为指定的不规则形状。 做个三角形的static control就可以了吗 例子:给对话类增加一个CRgn数据成员,以后要使用该数据成员建立窗口区域。Class CRoundDlg : public CDialog{ …private : Crgn m_rgn : // window region …}修改OnInitDialog函数建立一个椭圆区域并调用SetWindowRgn将该区域分配给窗口:BOOL CRoundDlg : : OnInitDialog ( ){ CDialog : : OnInitDialog ( ) //Get size of dialog . CRect rcDialog GetClientRect (rcDialog ) // Create region and assign to window . m_rgn . CreateEllipticRgn (0 , 0 , rcDialog.Width( ) , rcDialog.Height ( ) ) SetWindowRgn (GetSafeHwnd ( ) , (HRGN) m_ rgn ,TRUE ) return TRUE} 当个makergn做什么形状的窗口都行! to macy_wang(小鸟) 恕小弟无知,哪儿有makergn? 例子:给对话类增加一个CRgn数据成员,以后要使用该数据成员建立窗口区域。Class CRoundDlg : public CDialog{ …private : Crgn m_rgn : // window region …}修改OnInitDialog函数建立一个椭圆区域并调用SetWindowRgn将该区域分配给窗口:BOOL CRoundDlg : : OnInitDialog ( ){ CDialog : : OnInitDialog ( ) //Get size of dialog . CRect rcDialog GetClientRect (rcDialog ) // Create region and assign to window . m_rgn . CreateEllipticRgn (0 , 0 , rcDialog.Width( ) , rcDialog.Height ( ) ) SetWindowRgn (GetSafeHwnd ( ) , (HRGN) m_ rgn ,TRUE ) return TRUE} 可以给例程,若需要将EMail和需要一起发个短信息给我。 自定义消息响应函数的添加 对过个HTML文件的打包合并 VC中对话框如何捕获onchar函数? 关于无模式对话框的问题~~~ 怎样在VC++中删除一个在ClassView中显示的类 关于Edit Control with MultiLine问题 一个关于DIB的模块设计,请各大高手指教 请问如何创建一个新类? 我想自己写一个安装程序其中要注册一个ocx CreateEx创建窗口的问题 一个亟待解决的问题:(一个初级问题) 求救,很急,谁能提供繁体转简体的算法或者程序之类的东西,对照表也可以
可能我说的有点问题,补充一下
将这些箭头和三角形作为一个窗口对象放在大的窗口中。
方法二:作三角形的窗口。(占用系统资源多,易于实现)。
可以使用新的SDK函数SetWindowRgn。该函数将绘画和鼠标消息限定在窗口的一个指定的区域,实际上使窗口成为指定的不规则形状。
给对话类增加一个CRgn数据成员,以后要使用该数据成员建立窗口区域。
Class CRoundDlg : public CDialog
{
…
private :
Crgn m_rgn : // window region
…
}
修改OnInitDialog函数建立一个椭圆区域并调用SetWindowRgn将该区域分配给窗口:
BOOL CRoundDlg : : OnInitDialog ( )
{
CDialog : : OnInitDialog ( ) //Get size of dialog .
CRect rcDialog
GetClientRect (rcDialog ) // Create region and assign to window .
m_rgn . CreateEllipticRgn (0 , 0 , rcDialog.Width( ) , rcDialog.Height ( ) )
SetWindowRgn (GetSafeHwnd ( ) , (HRGN) m_ rgn ,TRUE ) return TRUE
}
恕小弟无知,哪儿有makergn?
给对话类增加一个CRgn数据成员,以后要使用该数据成员建立窗口区域。
Class CRoundDlg : public CDialog
{
…
private :
Crgn m_rgn : // window region
…
}
修改OnInitDialog函数建立一个椭圆区域并调用SetWindowRgn将该区域分配给窗口:
BOOL CRoundDlg : : OnInitDialog ( )
{
CDialog : : OnInitDialog ( ) //Get size of dialog .
CRect rcDialog
GetClientRect (rcDialog ) // Create region and assign to window .
m_rgn . CreateEllipticRgn (0 , 0 , rcDialog.Width( ) , rcDialog.Height ( ) )
SetWindowRgn (GetSafeHwnd ( ) , (HRGN) m_ rgn ,TRUE ) return TRUE
}