如果可以,谁能大概讲讲如何开发一个既是容器又是控件的东西?提供参考资料和书籍也行.
重赏,可单独再要分,谢谢!
15 个解决方案
#1
控件可以作为容器,在提高功能的时候,嵌入其他控件,如window media player, flash.ocx.
具体做法和在应用程序里嵌入flash.ocx 是一样的,没有区别,在应该程序里如何嵌入flash.在你的控件里也同样的嵌入.
MFC 最简单就是 才对话框上放flash,可普通button, static控件一样使用
动态创建: 添加 mfc activexs 类 from flash.ocx
m_acxctrl 是类变量
if (!m_acxctrl.Create(NULL, WS_CHILD | WS_VISIBLE, rc, this, IDC_ACXCTRL1))
{
AfxMessageBox(L"Failed to create AcxCtrl wnd");
return -1;
}
wtl 也差不多
动态创建
#import "你的路径\\flash.ocx"
CAxWindow flashwnd;
flashwnd.Create(m_hWnd, rc, 0, WS_CHILD|WS_VISIBLE);
flashwnd.CreateControlEx("{d27cdb6e-ae6d-11cf-96b8-444553540000}", NULL, NULL, &punkCtrl);
主要的代码都在这里了,不明白在问吧
具体做法和在应用程序里嵌入flash.ocx 是一样的,没有区别,在应该程序里如何嵌入flash.在你的控件里也同样的嵌入.
MFC 最简单就是 才对话框上放flash,可普通button, static控件一样使用
动态创建: 添加 mfc activexs 类 from flash.ocx
m_acxctrl 是类变量
if (!m_acxctrl.Create(NULL, WS_CHILD | WS_VISIBLE, rc, this, IDC_ACXCTRL1))
{
AfxMessageBox(L"Failed to create AcxCtrl wnd");
return -1;
}
wtl 也差不多
动态创建
#import "你的路径\\flash.ocx"
CAxWindow flashwnd;
flashwnd.Create(m_hWnd, rc, 0, WS_CHILD|WS_VISIBLE);
flashwnd.CreateControlEx("{d27cdb6e-ae6d-11cf-96b8-444553540000}", NULL, NULL, &punkCtrl);
主要的代码都在这里了,不明白在问吧
#2
码这么多字真累呀
#3
可以啊,实现activex容器的几个接口就行了,
//
// activeX container
//
IOleClientSite
IOleInPlaceFrame
IOleInPlaceSite
http://www.codeproject.com/KB/COM/cwebpage.aspx
//
// activeX container
//
IOleClientSite
IOleInPlaceFrame
IOleInPlaceSite
http://www.codeproject.com/KB/COM/cwebpage.aspx
#4
一般来说,控件是可以作为容器的
如普通的BUTTON,EDIT都是继承自CWindow类的
要看你公司那个控件是继承自什么类的
继承自Window类有个好处,就是很多方法不用写了,加入子控件比较简单
如果不是继承自相应的window类,也没关系
就是要自己去写一些加载子控件,或是你说的flash
如普通的BUTTON,EDIT都是继承自CWindow类的
要看你公司那个控件是继承自什么类的
继承自Window类有个好处,就是很多方法不用写了,加入子控件比较简单
如果不是继承自相应的window类,也没关系
就是要自己去写一些加载子控件,或是你说的flash
#5
唉,小弟刚刚接触com, activex这些玩意儿。不太懂。
再问下,那个flash控件,也就是shockwaveflash,可以插入到窗体中用来播放flash的,我用自己的容器来装载这个控件,能不能实现背景半透明的效果?
有个现成的实现背景透明的代码,基于WTL的,看着头疼。
http://www.ernzo.com/windowlesscont.aspx
再问下,那个flash控件,也就是shockwaveflash,可以插入到窗体中用来播放flash的,我用自己的容器来装载这个控件,能不能实现背景半透明的效果?
有个现成的实现背景透明的代码,基于WTL的,看着头疼。
http://www.ernzo.com/windowlesscont.aspx
#6
可以的
#7
http://www.ernzo.com/windowlesscont.aspx
这篇很不错啊,如果你看不懂这篇,别人再给你讲,估计你也看不懂
这篇很不错啊,如果你看不懂这篇,别人再给你讲,估计你也看不懂
#8
背景透明是什么?
是 windowless 吗?
是 windowless 吗?
#9
flash.ocx 有一个属性实现 windowless
put_WMode("Transparent"),
#10
好像还要看它的容器,设成transparent,反正这个flash直接插到MFC的对话框后会有点问题,插到C#里这个属性没用,插到VB的窗体里就可以,插到IE里面也可以。。。。。
上面我给的网址,是基于WTL让它背景透明的。
不过我现在需要支持半透明。
上面我给的网址,是基于WTL让它背景透明的。
不过我现在需要支持半透明。
#11
半透明是什么?
#12
比如我不让背景透明,我给它设给颜色,然后给它50%的透明度,这样就能透过这个背景看到后面的东西。
我觉得如果容器能取到控件的背景颜色,然后根据自己该处显示的颜色,是不是就可以就可以通过利用一些算法让它显示出透明的效果。
谢谢你这么热心回答我的问题。
我觉得如果容器能取到控件的背景颜色,然后根据自己该处显示的颜色,是不是就可以就可以通过利用一些算法让它显示出透明的效果。
谢谢你这么热心回答我的问题。
#13
关注一下,
#14
mark~
#15
先结帖了,有问题再请教大家,谢谢
#1
控件可以作为容器,在提高功能的时候,嵌入其他控件,如window media player, flash.ocx.
具体做法和在应用程序里嵌入flash.ocx 是一样的,没有区别,在应该程序里如何嵌入flash.在你的控件里也同样的嵌入.
MFC 最简单就是 才对话框上放flash,可普通button, static控件一样使用
动态创建: 添加 mfc activexs 类 from flash.ocx
m_acxctrl 是类变量
if (!m_acxctrl.Create(NULL, WS_CHILD | WS_VISIBLE, rc, this, IDC_ACXCTRL1))
{
AfxMessageBox(L"Failed to create AcxCtrl wnd");
return -1;
}
wtl 也差不多
动态创建
#import "你的路径\\flash.ocx"
CAxWindow flashwnd;
flashwnd.Create(m_hWnd, rc, 0, WS_CHILD|WS_VISIBLE);
flashwnd.CreateControlEx("{d27cdb6e-ae6d-11cf-96b8-444553540000}", NULL, NULL, &punkCtrl);
主要的代码都在这里了,不明白在问吧
具体做法和在应用程序里嵌入flash.ocx 是一样的,没有区别,在应该程序里如何嵌入flash.在你的控件里也同样的嵌入.
MFC 最简单就是 才对话框上放flash,可普通button, static控件一样使用
动态创建: 添加 mfc activexs 类 from flash.ocx
m_acxctrl 是类变量
if (!m_acxctrl.Create(NULL, WS_CHILD | WS_VISIBLE, rc, this, IDC_ACXCTRL1))
{
AfxMessageBox(L"Failed to create AcxCtrl wnd");
return -1;
}
wtl 也差不多
动态创建
#import "你的路径\\flash.ocx"
CAxWindow flashwnd;
flashwnd.Create(m_hWnd, rc, 0, WS_CHILD|WS_VISIBLE);
flashwnd.CreateControlEx("{d27cdb6e-ae6d-11cf-96b8-444553540000}", NULL, NULL, &punkCtrl);
主要的代码都在这里了,不明白在问吧
#2
码这么多字真累呀
#3
可以啊,实现activex容器的几个接口就行了,
//
// activeX container
//
IOleClientSite
IOleInPlaceFrame
IOleInPlaceSite
http://www.codeproject.com/KB/COM/cwebpage.aspx
//
// activeX container
//
IOleClientSite
IOleInPlaceFrame
IOleInPlaceSite
http://www.codeproject.com/KB/COM/cwebpage.aspx
#4
一般来说,控件是可以作为容器的
如普通的BUTTON,EDIT都是继承自CWindow类的
要看你公司那个控件是继承自什么类的
继承自Window类有个好处,就是很多方法不用写了,加入子控件比较简单
如果不是继承自相应的window类,也没关系
就是要自己去写一些加载子控件,或是你说的flash
如普通的BUTTON,EDIT都是继承自CWindow类的
要看你公司那个控件是继承自什么类的
继承自Window类有个好处,就是很多方法不用写了,加入子控件比较简单
如果不是继承自相应的window类,也没关系
就是要自己去写一些加载子控件,或是你说的flash
#5
唉,小弟刚刚接触com, activex这些玩意儿。不太懂。
再问下,那个flash控件,也就是shockwaveflash,可以插入到窗体中用来播放flash的,我用自己的容器来装载这个控件,能不能实现背景半透明的效果?
有个现成的实现背景透明的代码,基于WTL的,看着头疼。
http://www.ernzo.com/windowlesscont.aspx
再问下,那个flash控件,也就是shockwaveflash,可以插入到窗体中用来播放flash的,我用自己的容器来装载这个控件,能不能实现背景半透明的效果?
有个现成的实现背景透明的代码,基于WTL的,看着头疼。
http://www.ernzo.com/windowlesscont.aspx
#6
可以的
#7
http://www.ernzo.com/windowlesscont.aspx
这篇很不错啊,如果你看不懂这篇,别人再给你讲,估计你也看不懂
这篇很不错啊,如果你看不懂这篇,别人再给你讲,估计你也看不懂
#8
背景透明是什么?
是 windowless 吗?
是 windowless 吗?
#9
flash.ocx 有一个属性实现 windowless
put_WMode("Transparent"),
#10
好像还要看它的容器,设成transparent,反正这个flash直接插到MFC的对话框后会有点问题,插到C#里这个属性没用,插到VB的窗体里就可以,插到IE里面也可以。。。。。
上面我给的网址,是基于WTL让它背景透明的。
不过我现在需要支持半透明。
上面我给的网址,是基于WTL让它背景透明的。
不过我现在需要支持半透明。
#11
半透明是什么?
#12
比如我不让背景透明,我给它设给颜色,然后给它50%的透明度,这样就能透过这个背景看到后面的东西。
我觉得如果容器能取到控件的背景颜色,然后根据自己该处显示的颜色,是不是就可以就可以通过利用一些算法让它显示出透明的效果。
谢谢你这么热心回答我的问题。
我觉得如果容器能取到控件的背景颜色,然后根据自己该处显示的颜色,是不是就可以就可以通过利用一些算法让它显示出透明的效果。
谢谢你这么热心回答我的问题。
#13
关注一下,
#14
mark~
#15
先结帖了,有问题再请教大家,谢谢