VC++ 如何使用组合框的SetItemDataPtr 和GetItemDataPtr 操作函数指针
如题.在VC6.0中如何使用组合框的SetItemDataPtr和GetItemDataPtr操作函数指针,并执行该函数指针对应的函数.我现在只有这些分,还望高手不吝赐教...
如题.
在VC6.0中 如何使用组合框的SetItemDataPtr 和GetItemDataPtr 操作函数指针,并执行该函数指针对应的函数.
我现在只有这些分,还望高手不吝赐教!
首先感谢hibok2的回答,你给的demo试验通过!
补充一下,这里说的函数指针是本类中的函数指针.或者说是本类中一系列函数的函数指针数组.
比如: 在类CMyDialog中的成员函数CMyDialog::func1(),CMyDialog::func2(),...,CMyDialog::funcn() 展开
在VC6.0中 如何使用组合框的SetItemDataPtr 和GetItemDataPtr 操作函数指针,并执行该函数指针对应的函数.
我现在只有这些分,还望高手不吝赐教!
首先感谢hibok2的回答,你给的demo试验通过!
补充一下,这里说的函数指针是本类中的函数指针.或者说是本类中一系列函数的函数指针数组.
比如: 在类CMyDialog中的成员函数CMyDialog::func1(),CMyDialog::func2(),...,CMyDialog::funcn() 展开
1个回答
展开全部
给你写了个示例。
// 定义一个函数类型
typedef void FUNC(int a, int b);
// maxv和minv分别为两个不同的item调用的函数
void maxv(int a, int b)
{
AfxMessageBox("max" );
}
void minv(int a, int b)
{
AfxMessageBox("min");
}
void CMyDialog::OnInitDialog()
{
......
int n;
n = m_combo.AddString("max");
m_combo.SetItemDataPtr(n, (void*)maxv); //将item和函数关联
n = m_combo.AddString("min");
m_combo.SetItemDataPtr(n, (void*)minv); //将item和函数关联
.......
}
void CMyDialog::OnCbnSelchangeCombo1()
{
// 获得当前选中的item
int n = m_combo.GetCurSel();
// 得到与item关联的函数指针,并将它转换为FUNC*
FUNC* p = (FUNC*)(m_combo.GetItemDataPtr(n));
// 执行这个函数
(*p)(2, 3);
}
// 定义一个函数类型
typedef void FUNC(int a, int b);
// maxv和minv分别为两个不同的item调用的函数
void maxv(int a, int b)
{
AfxMessageBox("max" );
}
void minv(int a, int b)
{
AfxMessageBox("min");
}
void CMyDialog::OnInitDialog()
{
......
int n;
n = m_combo.AddString("max");
m_combo.SetItemDataPtr(n, (void*)maxv); //将item和函数关联
n = m_combo.AddString("min");
m_combo.SetItemDataPtr(n, (void*)minv); //将item和函数关联
.......
}
void CMyDialog::OnCbnSelchangeCombo1()
{
// 获得当前选中的item
int n = m_combo.GetCurSel();
// 得到与item关联的函数指针,并将它转换为FUNC*
FUNC* p = (FUNC*)(m_combo.GetItemDataPtr(n));
// 执行这个函数
(*p)(2, 3);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询