我用VC写了一个DLL,里面导出这样一个函数:BOOL _stdcall Text(HWND hWnd)
{
char buffer[128];                                             //
sprintf(buffer, "The parameter of OpenFwMode is %d.", hWnd);  // 这里三行是想输出传入的参数hWnd,以确认传入的值
MessageBox(NULL, buffer, "Firewall", MB_OK);                  // return TRUE;
}然后我用Delphi编了一个EXE,其中如此声明以上函数:function Test(hWnd: HWND): LongBool; external '以上DLL的名字' name 'Test';我在EXE中调用Test函数的代码:
MessageBox(0, PChar(IntToStr(hWnd)), PChar('Test'), MB_OK);  // 在把hWnd传给DLL的Test函数之前先输出它的值,以确认传给Test函数的值
Test(hWnd);  // 我把程序里的一个hWnd传给DLL的Test函数,hWnd是程序里一个窗口的句柄
奇怪的问题来了:EXE程序执行完以上的代码,会两次弹出MessageBox窗口。
一次是调用Test函数之前弹出的,
一次是调用Test函数的代码弹出的,按理说两次弹出窗口显示的值应该一样啊,可是我调试了很久,两次输出的值总是不同,太郁闷了,请大家帮我看看这是为何,错在哪里了???