MFC: _AFXWIN_INLINE मुझे दे "कोई अतिभारित फ़ंक्शन 6 तर्क नहीं लेता है"

Nov 26 2020

एमएफसी एप्लिकेशन में मैं डिबग उद्देश्यों के लिए जोड़े गए कंसोल विंडो को स्थानांतरित करने का प्रयास कर रहा हूं।

    /*  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" पर रखता हूं तो मुझे अपेक्षित प्रोटोटाइप मिलता है। लेकिन अगर मैं "गोटो परिभाषा" का उपयोग करता हूं तो मुझे वह परिभाषा मिलती है जो आपको पहली लाइनों में दिखाई देती है (ग्रे आउट)।

मैंने "#undef _AFXWIN_INLINE" की कोशिश की है

जवाब

2 IInspectable Nov 26 2020 at 09:44

CWnd :: MoveWindow में दो अधिभार हैं, एक में 5 तर्क हैं, दूसरे में 2 तर्क हैं। जैसा कि त्रुटि इंगित करती है, कोई भी अधिभार नहीं है जो 6 तर्क लेता है।

ऐसा लगता है कि आप इसके बजाय Windows API फ़ंक्शन MoveWindow को कॉल करने का प्रयास कर रहे हैं । यह एक निशुल्क फ़ंक्शन है, इसलिए आपको CWnd::गुंजाइश रिज़ॉल्यूशन को छोड़ने की आवश्यकता है । वैश्विक नामस्थान रिज़ॉल्यूशन उपसर्ग का उपयोग करना हमेशा सुरक्षित होता है, जैसे ::MoveWindow(...);:।