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(...);
。例:。