MFC: _AFXWIN_INLINE me donne "aucune fonction surchargée ne prend 6 arguments"

Nov 26 2020

Dans une application MFC, j'essaie de déplacer une fenêtre de console que j'ai ajoutée à des fins de débogage.

    /*  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 );

J'obtiens cette erreur:

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

La chose étrange est que si je place le pointeur de la souris sur "MoveWindow" "J'obtiens le prototype attendu. Mais si j'utilise" goto definition "j'obtiens la définition que vous voyez dans les premières lignes (grisées).

J'ai essayé de "#undef _AFXWIN_INLINE"

Réponses

2 IInspectable Nov 26 2020 at 09:44

CWnd :: MoveWindow a deux surcharges, l'une prenant 5 arguments, l'autre prenant 2 arguments. Comme l'indique l'erreur, il n'y a pas de surcharge qui prend 6 arguments.

Il semble que vous essayez d'appeler la fonction API Windows MoveWindow à la place. Il s'agit d'une fonction gratuite, vous devez donc supprimer la CWnd::résolution de l' oscilloscope. L' utilisation d' un préfixe global de résolution d'espace de noms est toujours en sécurité, par exemple: ::MoveWindow(...);.