sdk紧急求教,怎样使用dll中已经定义的函数!!

kurapika5 2004-03-01 09:26:54
主函数过程
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
TCHAR szBuffer [40] ;
HMODULE hLibrary ;
DLLAPI pDllDrawText;

switch (message)
{
case WM_CREATE:
hLibrary = LoadLibrary(TEXT("homework4.dll"));
pDllDrawText = GetProcAddress(hLibrary,TEXT("DllDrawText"));


case WM_PAINT: //处理WM_PAINT消息,
hdc = BeginPaint (hwnd, &ps) ;//获得设备描述表句柄
GetClientRect (hwnd, &rect) ;//获得用户区域大小
TextOut(hdc,0,0,szBuffer,wsprintf(szBuffer, TEXT("这句话由主程序显示")));//主程序(exe)显示部分
pDllDrawText(hdc, &rect,TEXT ("这句话由Dll显示"));//dll显示部分
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY: //自杀
FreeLibrary(hLibrary);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}


出错提示
(71) : error C2197:'int (__stdcall *)(void)' : too many actual parameters
Error executing cl.exe.

71行就是 pDllDrawText(hdc, &rect,TEXT ("这句话由Dll显示"));//dll显示部分

函数原型
EXPORT BOOL CALLBACK DllDrawTextA (HDC hdc, PRECT prc, PCSTR pString)
{
int iLength ;
SIZE size ;
iLength=lstrlenA(pString);
GetTextExtentPoint32A(hdc,pString,iLength,&size);
return TextOutA (hdc, (prc->right - size.cx ), (prc->bottom - size.cy), pString, iLength) ;
}

并没有多余参数啊,就是三个啊!

另,我用在同一workspace 使用
「Project」菜单中,选择「Dependencies」,在「Select Project To Modify」清单方块中选择「EDRTEST」。在「Dependent On The Following Project(s)」
编译成功
...全文
41 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧