VC里控件的方法
void CXsOmronCtrl::GetBuffer(long *buffer)
{
long m_nChFirstY[100];
m_nChFirstY[0] = 88;
buffer = m_nChFirstY;
}VB里调用
Private Sub CFixPicture_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Double, ByVal Y As Double)
Dim buffer(0 To 100) As Long
buffer(0) = 77
Call XsOmron1.GetBuffer(buffer(0))
End Sub77能送入控件函数中
但88却不能返回VB中
有人说CopyMemory
可我不知道在我这儿如何运用,帮忙!
void CXsOmronCtrl::GetBuffer(long *buffer)
{
long m_nChFirstY[100];
m_nChFirstY[0] = 88;
buffer = m_nChFirstY;
}VB里调用
Private Sub CFixPicture_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Double, ByVal Y As Double)
Dim buffer(0 To 100) As Long
buffer(0) = 77
Call XsOmron1.GetBuffer(buffer(0))
End Sub77能送入控件函数中
但88却不能返回VB中
有人说CopyMemory
可我不知道在我这儿如何运用,帮忙!
void CXsOmronCtrl::GetBuffer(long *buffer)
{
long m_nChFirstY[100];
m_nChFirstY[0] = 88;
*buffer = m_nChFirstY;
}
void GetBuffer(long *buffer)
{
long m_nChFirstY[100];
m_nChFirstY[0] = 88;
memcpy((void*)buffer,(void*)m_nChFirstY,sizeof(m_nChFirstY));
}
我在VB窗体上加载控件,不用声明dll,VB自动声明为GetBuffer(buffer As long)TO: sunyard()
对,我问问题的时候简化错了,我源程序的m_nChFirstY其实是CXsOmronCtrl的成员变量TO: 3jaja(3++输入法)
我试一下再过来
buffer = m_nChFirstY获得了m_nChFirstY的地址,在VB里应该能指向m_nChFirstY的数据区,为什么拷贝后可以了呢,不拷贝就不行呢?再问一个memcpy的问题,它把指针强转为void型了,那它是按字节拷贝,还是?
求教!