MFC: _AFXWIN_INLINE daje mi „żadna przeciążona funkcja nie przyjmuje 6 argumentów”
W aplikacji MFC próbuję przenieść okno konsoli, które dodałem w celu debugowania.
/* 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 );
Otrzymuję ten błąd:
Error C2661 'CWnd::MoveWindow': no overloaded function takes 6 arguments
G:\proj\repos\EnterDG\EnterDGDlg.cpp 201
Dziwne jest to, że jeśli ustawię wskaźnik myszy na „MoveWindow”, „otrzymam oczekiwany prototyp. Ale jeśli użyję„ goto definition ”, otrzymam definicję, którą widzisz w pierwszych wierszach (wyszarzona).
Próbowałem „#undef _AFXWIN_INLINE”
Odpowiedzi
CWnd :: MoveWindow ma dwa przeciążenia, jeden przyjmuje 5 argumentów, a drugi 2 argumenty. Jak wskazuje błąd, nie ma przeciążenia, które przyjmuje 6 argumentów.
Wygląda na to, że zamiast tego próbujesz wywołać funkcję Windows API MoveWindow . Jest to darmowa funkcja, więc musisz porzucić CWnd::
rozdzielczość oscyloskopu. Używanie przedrostka rozpoznawania globalnej przestrzeni nazw jest zawsze bezpieczne, np ::MoveWindow(...);
. : .