制作一个控件,需要传递一个函数进去我自己是这样定义的,跳出错误!
com内部//首先定义一个函数指针类型
typedef CString (*pFun)(CString p,long val);
//默认全局处理函数
CString xDefultFun(CString p,long val)
{
CString str;
str.Format(_T("%ld\0"),val);
return str;
}
pFun xFun;
CString xParameter;
//在构造函数里面初始化
xFun = xDefultFun;
xParameter = _T("");//定义的控件接口是这样的
//由于com接口只能支持一些通用的数据类型,我选择了LPCTSTR做为函数的类型
//有错的话就是这里,我不能确定正确的地方.
void CCurveShowCtrlCtrl::SetXConversionFun(LPCTSTR pActFun, LPCTSTR pParameter)
{
// TODO: Add your dispatch handler code here
xFun = (pFun)pActFun;
xParameter = pParameter;
}使用控件,默认处理函数是没有错的,很正常.
调用控件情况控件的变量为: newCtrl//定义全局处理函数
CString xNewFun(CString p,long val)
{
CString str;
str.Format(_T("%ld\0"),val);
return str;
}
//控件调用,设置处理函数接口,把xNewFun指针传递进去
//传递的时候没有报错
//当控件调用xFun时就错了.
newCtrl.SetXConversionFun(LPCTSTR)xNewFun,_T("Test"));
com内部//首先定义一个函数指针类型
typedef CString (*pFun)(CString p,long val);
//默认全局处理函数
CString xDefultFun(CString p,long val)
{
CString str;
str.Format(_T("%ld\0"),val);
return str;
}
pFun xFun;
CString xParameter;
//在构造函数里面初始化
xFun = xDefultFun;
xParameter = _T("");//定义的控件接口是这样的
//由于com接口只能支持一些通用的数据类型,我选择了LPCTSTR做为函数的类型
//有错的话就是这里,我不能确定正确的地方.
void CCurveShowCtrlCtrl::SetXConversionFun(LPCTSTR pActFun, LPCTSTR pParameter)
{
// TODO: Add your dispatch handler code here
xFun = (pFun)pActFun;
xParameter = pParameter;
}使用控件,默认处理函数是没有错的,很正常.
调用控件情况控件的变量为: newCtrl//定义全局处理函数
CString xNewFun(CString p,long val)
{
CString str;
str.Format(_T("%ld\0"),val);
return str;
}
//控件调用,设置处理函数接口,把xNewFun指针传递进去
//传递的时候没有报错
//当控件调用xFun时就错了.
newCtrl.SetXConversionFun(LPCTSTR)xNewFun,_T("Test"));
newCtrl.SetXConversionFun((LPCTSTR)xNewFun,_T("Test"));
你可以把代码发给我,我帮你调好发给你
[email protected]
void CCurveShowCtrlCtrl::SetXConversionFun(LPUNKNOWN pActFun, LPCTSTR pParameter)
{
// TODO: Add your dispatch handler code here
xFun = (pFun)pActFun;
xParameter = pParameter;
}