在MFC中有很多重名函数,这是因为有的是微软的API,没有记错的话一般在电脑的user32.dll这个动态库中,这个可以直接百度微软的常见动态库就能搜索到很多,下面这个链接也详细讲述了相关方面微软API与MFC类库
当我们在MFC自己创建的窗口类中进行操作时,就是…Dlg这个类,我们在它的成员函数中进行调用时,比如下面这两个函数:
void GetWindowRect(LPRECT lpRect) const
BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y,
int cx, int cy, UINT nFlags)
他们的参数如上所示,但是如果我们自己在外边随便写一个函数不在窗口类中声明或者是全局中这两个函数是下面这样的:
WINAPI
GetWindowRect(
In HWND hWnd,
Out LPRECT lpRect);
WINAPI
SetWindowPos(
In HWND hWnd,
In_opt HWND hWndInsertAfter,
In int X,
In int Y,
In int cx,
In int cy,
In UINT uFlags);
可以看到他们的参数是不同的,就是因为一个是微软的API一个是MFC类库中的,它们的功能基本上一致。微软的接口函数一般第一个参数都是句柄,我们可以通过::域作用符来强制调用它们,但是在窗口类中调用的时候一般默认是MFC类库中的函数!