MFC: _AFXWIN_INLINE gib mir "keine überladene Funktion braucht 6 Argumente"

Nov 26 2020

In einer MFC-Anwendung versuche ich, ein Konsolenfenster zu verschieben, das ich zu Debug-Zwecken hinzugefügt habe.

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

Ich erhalte diesen Fehler:

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

Das Seltsame ist, dass ich den erwarteten Prototyp erhalte, wenn ich den Mauszeiger auf "MoveWindow" setze. Wenn ich jedoch "goto definition" verwende, erhalte ich die Definition, die Sie in den ersten Zeilen sehen (ausgegraut).

Ich habe versucht, "#undef _AFXWIN_INLINE"

Antworten

2 IInspectable Nov 26 2020 at 09:44

CWnd :: MoveWindow hat zwei Überladungen, von denen eine 5 Argumente und die andere 2 Argumente enthält. Wie der Fehler anzeigt, gibt es keine Überladung, die 6 Argumente akzeptiert.

Anscheinend versuchen Sie stattdessen, die Windows-API-Funktion MoveWindow aufzurufen . Dies ist eine kostenlose Funktion, daher müssen Sie die CWnd::Bereichsauflösung löschen. Die Verwendung eines Präfixes für die globale Namespace-Auflösung ist immer sicher, z ::MoveWindow(...);.