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定義」を使用すると、最初の行に表示される定義が得られます(グレー表示)。

「#undef_AFXWIN_INLINE」を試してみました

回答

2 IInspectable Nov 26 2020 at 09:44

CWnd :: MoveWindowには2つのオーバーロードがあり、1つは5つの引数を取り、もう1つは2つの引数を取ります。エラーが示すように、6つの引数を取るオーバーロードはありません。

代わりに、WindowsAPI関数MoveWindowを呼び出そうとしているようです。これは無料の機能なので、CWnd::スコープの解像度を下げる必要があります。グローバル名前空間解決プレフィックスの使用は常に安全です::MoveWindow(...);。例:。