MFC : _AFXWIN_INLINE은 "오버로드 된 함수가 6 개의 인수를 사용하지 않음"을 알려줍니다.

Nov 26 2020

MFC 응용 프로그램에서 디버그 목적으로 추가 한 콘솔 창을 이동하려고합니다.

    /*  Put here just for reference
        _AFXWIN_INLINE void CWnd::MoveWindow(LPCRECT lpRect, BOOL bRepaint)
        { MoveWindow(lpRect->left, lpRect->top, lpRect->right - lpRect->left,
        lpRect->bottom - lpRect->top, bRepaint); }
    */
        HANDLE hh;
        bool oo = CWnd::MoveWindow( hh, 100, 0, 300, 300, true );

이 오류가 발생합니다.

Error   C2661   'CWnd::MoveWindow': no overloaded function takes 6 arguments    
G:\proj\repos\EnterDG\EnterDGDlg.cpp    201

이상한 점은 마우스 포인터를 "MoveWindow" "에 놓으면 예상되는 프로토 타입을 얻지 만"goto definition "을 사용하면 첫 번째 줄 (회색으로 표시)에서 볼 수있는 정의를 얻습니다.

"#undef _AFXWIN_INLINE"을 시도했습니다.

답변

2 IInspectable Nov 26 2020 at 09:44

CWnd :: MoveWindow 에는 두 개의 오버로드가 있습니다. 하나는 5 개의 인수를, 다른 하나는 2 개의 인수를받습니다. 오류에서 알 수 있듯이 6 개의 인수를 사용하는 오버로드가 없습니다.

대신 Windows API 함수 MoveWindow 를 호출하려는 것 같습니다 . 이것은 무료 기능이므로 CWnd::스코프 해상도 를 떨어 뜨려야합니다 . 전역 네임 스페이스 확인 접두사를 사용하는 것은 항상 안전합니다. 예 : ::MoveWindow(...);.