为啥C++里面调用API的时候,有的API前需要加双冒号,有的不需要加

求教比如调用::GetWindowRect(gameh,&r1)函数的时候需要加,调用SetCursorPos(655+r1.left,577+r1.top)函数的时候不... 求教比如调用::GetWindowRect(gameh,&r1) 函数的时候需要加,调用SetCursorPos(655+r1.left,577+r1.top)函数的时候不需要加
那如何得知一个API是否被MFC封装?难道用编译看是否有错误的方法吗?
展开
 我来答
jackxjkp
2009-10-30 · TA获得超过223个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:481万
展开全部
这是因为有的函数是全局函数,而有的函数是MFC类的成员函数,是被封装的。

要区分这个的话,看参数就明白了。

拿MessageBox函数为例,全局函数有一个参数Hwnd好像,是用来指定窗口句柄的。但是MFC封装的MessageBox函数则没有,因为它的窗口句柄就是MFC对话框。

API见的多了就知道哪个是MFC封装的,哪个是全局的了……

呵呵,祝你进步
冒木芮梦影
2020-07-19 · TA获得超过3852个赞
知道大有可为答主
回答量:3090
采纳率:33%
帮助的人:280万
展开全部
这是个命名空间问题,
因为GetWindowRect
有两个这样名称的函数,
一个是
API
BOOL
GetWindowRect(
HWND
hWnd,
LPRECT
lpRect
);
另外一个类成员变量void
CWnd::GetWindowRect(
LPRECT
lpRect
)
const;
当有多个相同名字的函数时,需要特别指定是那个命名空间的函数,::代表全局,再如其他命名空间
std::vector<int>
v,
而SetCursorPos
只有一个这样名字函数,就可以省了呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式