MFC 如何调用Api的

xzjxylophone 2011-01-12 03:32:47
在MFC 或其他C++ 程序中可以调用windows api函数:
如:
int GetWindowText(
HWND hWnd, // handle to window or control with text
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum number of characters to copy
);


这些api函数 在操作系统中是以静态库的形式被C++ 程序调用还是以动态库的形式被调用的,如果是动态库,在使用这些api函数前没有 LoadLibray了, 有谁对这方面了解的,帮我说说下吧。

谢谢了。
...全文
198 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzjxylophone 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wangbo56916860 的回复:]

baidu下GetWIndowText在
user32.lib 下.
[/Quote]

谢谢, 我也看了MSDN 的确是在user32.lib下,并且我在我的VC++6.0安装目录下 也搜到 user32.lib 这个文件了 ,我本机上的目录“F:\Program Files\Microsoft Visual Studio\VC98\Lib”

我也想做一个类似于这个样子,我做出api供其他的开发人员去调用,应该用这种方法,跟windows api调用的差不多的吧。。

结贴了。

谢谢大家的帮助了!!
谢谢~
xzjxylophone 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ningweidong 的回复:]

像这种api函数,mfc里已经封装了。
它是动态链接库形式存在于内存中,因为很常用,所以就常驻内存了。你也就不用loadlibrary
[/Quote]

那我现在也想写一组API 函数供别人(对别人来说也是非常常用的)去调用,

我该把这些api包装成lib文件还是dll文件了?

别人在调用我的lib文件(或者dll文件)可以如下调用:
lib文件:
#include "DllInc/test3.h"
#pragma comment(lib, "DllInc/WinTest3.lib")

这样就可以直接用 WinTest3.lib里德函数了

或者:
dll文件:
HINSTANCE hInst;
hInst = LoadLibrary(L"DllInc/WinTest5.dll");
typedef int (*ADDPROC)(int a, int b);
//里面有个max函数
ADDPROC Add = (ADDPROC)GetProcAddress(hInst, "Max");
if (!Add)
{
cout << "获取函数地址失败!" << endl;
return -1;
}
int x,y;
scanf("%d",&x);
scanf("%d",&y);
cout << "max: " << Add(x, y) << endl;
FreeLibrary(hInst);


用lib方法的话,不知道能否a.lib函数调用b.lib的函数,b中函数不会调用a的函数。
用dll的方式调用里面的函数也太麻烦了

谁能有好的解决方案啊?
Eleven 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 xzjxylophone 的回复:]
在MFC 或其他C++ 程序中可以调用windows api函数:
如:
int GetWindowText(
HWND hWnd, // handle to window or control with text
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum number of……
[/Quote]
::GetWindowText();
wangbo56916860 2011-01-12
  • 打赏
  • 举报
回复
baidu下GetWIndowText在
user32.lib 下.
varding 2011-01-12
  • 打赏
  • 举报
回复
设置:“在共享 DLL 中使用 MFC”的时候IDE就帮你把需要的dll加入到工程了
ningweidong 2011-01-12
  • 打赏
  • 举报
回复
像这种api函数,mfc里已经封装了。
它是动态链接库形式存在于内存中,因为很常用,所以就常驻内存了。你也就不用loadlibrary
雪影 2011-01-12
  • 打赏
  • 举报
回复
系统OS提供的API,IDE自动为你添加了相关的lib
whycom 2011-01-12
  • 打赏
  • 举报
回复
是动态库,因为你连接了那些库所需的lib

15,979

社区成员

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

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