用MFC写了一个控件,给网页调用,他希望在调用的控件的时候,直接传参数给控件,比如:
<object classid=clsid:47939248-71F5-465D-AB7D-DC02FAD838EB align="absbottom" id="MyPlayer" style="WIDTH: 528px; HEIGHT: 432px">
<param name="ppp" value="2546">
</object>ppp就是控件里的一个参数,如何在控件里添加这样一个参数?请详细点谢谢PS:我添加了一个属性,只有Get_ppp() 和Set_ppp(), 好像也得不到传进来的值。
<object classid=clsid:47939248-71F5-465D-AB7D-DC02FAD838EB align="absbottom" id="MyPlayer" style="WIDTH: 528px; HEIGHT: 432px">
<param name="ppp" value="2546">
</object>ppp就是控件里的一个参数,如何在控件里添加这样一个参数?请详细点谢谢PS:我添加了一个属性,只有Get_ppp() 和Set_ppp(), 好像也得不到传进来的值。
解决方案 »
- 请问多个线程传参给主线程用::PostMessage(..),主线程执行是同时执行,还是一个一个执行?
- SetBkColor()怎么没有作用了啊
- 菜鸟送分题 高手来啊 listcontrl 的
- Polyline( )为什么不能正常运行了?(SDK 方式)
- 如何计算核心对象的引用计数,怎么取得当前引用计数的值?
- 如何将CString 中的"\",替换成"\\",用REPLACE函数怎么写,因"\"是转义符,谢谢!
- MFC通过ADO写入数据库数据的问题
- 谁能告诉我一个关于程序图标的网站?急,我需要一些精品图标!
- 谁能发我一个MSVCRTD。DLL
- 如何在MFC中添加网页插件???小弟要详细过程~~~~~急急急
- 快捷方式中目标中的参数在activex中怎么用
- 学VC真是明智的选择
classid=clsid:47939248-71F5-465D-AB7D-DC02FAD838EB align="absbottom" id="MyPlayer" style="WIDTH: 528px; HEIGHT: 432px">
<param name="ppp" value="2546">
</object> myp.ppp = "ssss"
class CACtrl : public COleControl
{
DECLARE_DYNCREATE(CACtrl)// 构造函数
public:
CACtrl();// 重写
public:
virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
virtual void DoPropExchange(CPropExchange* pPX);
virtual void OnResetState();// 实现
protected:
~CACtrl();
DECLARE_OLECREATE_EX(CACtrl) // 类工厂和 guid
DECLARE_OLETYPELIB(CACtrl) // GetTypeInfo
DECLARE_PROPPAGEIDS(CACtrl) // 属性页 ID
DECLARE_OLECTLTYPE(CACtrl) // 类型名称和杂项状态
// 消息映射
DECLARE_MESSAGE_MAP()// 调度映射
DECLARE_DISPATCH_MAP()
afx_msg void AboutBox();// 事件映射
DECLARE_EVENT_MAP()
// 调度和事件 ID
public:
enum {
dispidSetIp = 7L, dispidSetPort = 6L, dispidStop = 4L, dispidPause = 3L, dispidPlay = 2L, dispidlon = 1L
}; Form m_MyDialog;
protected:
LONG lon(LONG a, LONG b);
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
CWnd *pWnd;
protected:
void Play(void);
void Pause(void);
void Stop(void);
//void SetIp(CHAR* ip);
void SetPort(LONG port);
LONG SetIp(LPCTSTR ip);
};//////////////////////////////////////////////////////////////<html>
<head>
<script type="text/javascript" language="javascript">
function lon()
{
alert(document.DialogControl.lon(1,2));
}
function Play()
{
document.DialogControl.Play();
}
function Pause()
{
document.DialogControl.Pause();
}
function Stop()
{
document.DialogControl.Stop();
}
function SetIp()
{
document.DialogControl.SetIp("192.168.0.144");
}
function SetPort()
{
document.DialogControl.SetPort(8080);
}
</script><title>DialogControl</title>
</head>
<body>
<center>
<OBJECT ID="DialogControl" CLASSID="CLSID:7C18D3BB-D761-4B9C-AB52-3F73FE9CC227"
HEIGHT=385 WIDTH=700 >
</OBJECT>
</center><center>
<input type="button" id="lon" value="lon" onclick="lon();"/>
<input type="button" id="Play" value="Play" onclick="Play();"/>
<input type="button" id="Pause" value="Pause" onclick="Pause();"/>
<input type="button" id="Stop" value="Stop" onclick="Stop();"/>
<input type="button" id="SetIp" value="SetIp" onclick="SetIp()";/>
<input type="button" id="SetPort" value="SetPort" onclick="SetPort();"/>
</center>
</body>
</html>
你传的 JS要和COM中的参数类型兼容才行
void SetPort(LONG port);
LONG SetIp(LPCTSTR ip);我这里用的是
<param name="ppp" value="2546">
</object> 这是网站的 调用方式,我们约定了参数都是 字符串类型BSTR
关键问题是当网页 这一句存在时,<param name="ppp" value="2546">
我不知道在控件里如何获得BSTR ppp ="2526" ?
http://www.cnblogs.com/RIVERSPIRIT/articles/1334257.html
// Cmfc1Ctrl::DoPropExchange - 持久性支持void Cmfc1Ctrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX); // TODO: 为每个持久的自定义属性调用 PX_ 函数。
PX_String(pPX,_T("strRsIp"),m_strRsIp);
PX_String(pPX,_T("strRsPort"),m_strRsPort);
PX_String(pPX,_T("strCuID"),m_strCuID);
PX_String(pPX,_T("strPwd"),m_strPwd);
PX_String(pPX,_T("strAppID"),m_strAppID);
PX_String(pPX,_T("strActivexType"),m_strActivexType);
//PX_String(pPX,_T("strRsIp"),m_strRsIp);
}