象声明API函数一样声明就可以了,以定单撤消为例:
Public Declare Function CancelOrder Lib "FirmClient.dll" (Byval sCoNo as string,Byval sBillNo as string,Byval sRefNo as string)
Public Declare Function CancelOrder Lib "FirmClient.dll" (Byval sCoNo as string,Byval sBillNo as string,Byval sRefNo as string)
我在DLL中要操作的对象是控件MSHFlexGrid.ocx
我是这么想的:
传递的掺数 HWND hwnd;
下面是我的测试代码:
CMSHFlexGrid * m_pMSHFlexGrid;
extern "C" int WINAPI TestMSHFG(long lhwnd){
HWND hwnd =(HWND)lhwnd;
CWnd * pWnd =CWnd::FromHandlePermanent(hwnd);
int iNum(0);
if(pWnd){
::AfxMessageBox( "Success!");
}
else
{
::AfxMessageBox("Failure!");
return -1;
}
m_pMSHFlexGrid = (CMSHFlexGrid*) pWnd;
if(m_pMSHFlexGrid){
iNum =(int) (m_pMSHFlexGrid->GetFixedCols(); ::AfxMessageBox("Success!");
}
else
{
::AfxMessageBox("Failure!");
iNum= -1;
}
return iNum;
}我用VC调用的情况: CMSHFlexGrid m_MSHFlexGrid;
..........对m_MSHFlexGrid进行初始化
int i(0);
i=TestMSHFG(m_MSHFlexGrid.m_hWnd);
显示正确
我用VB调用的情况:
Private Declare Function TestMSHFG Lib "DllTest.Dll" (ByVal hwnd As Long) As Integer Private Sub Form_Load() Dim ival As Integer
ival = TestMSHFG(MSHFlexGrid1.hwnd)
MsgBox ival
End Sub先显示了一个"Failure!"对话框
返回为-1;
http://www.csdn.net/expert/topic/440/440137.shtm