PRB: C2065 Error Occurs on GetWrapperWindow or Other SymbolsLast reviewed: November 17, 1997Article ID: Q176487 |
The information in this article applies to:
SYMPTOMSWhen using a function or a symbol dependent upon the Macintosh Operating System headers, the following error message may appear:
error C2065: 'GetWrapperWindow' : undeclared identifier CAUSEThe native Macintosh header, MACOS\WINDOWS.H (or others), was not included before the Winwlm.h file.
RESOLUTIONInclude the required header (macos/windows.h for GetWrapperWindow) before including Winwlm.h for MFC applications. Winwlm.h is included in the Afxwin.h file. For example:
#include <macname1.h> #include <macos/windows.h> #include <macname2.h> #include <afxwin.h> STATUSThis behavior is by design.
MORE INFORMATIONWhen targeting applications for the Macintosh platform, the Winwlm.h header file is pulled in the default WLM libraries and declares many symbols needed to use Macintosh specific objects from a Windows application. For example, GetWrapperWindow returns the Macintosh window data structure WindowRef underlying the given the Windows HWND. This header file may be included in applications manually or automatically pulled in when building MFC applications through the Afxwin.h header file. For example:
afxwin.h afx.h afxver_.h afxv_w32.h windows.h // for Macintosh targets this is mac/include/windows.h winwlm.h // where GetWrapperWindow, and so on, are prototyped macname2.h //However, the Winwlm.h file excludes many symbols if certain native Macintosh header files are not previously included. For example, GetWrapperWindow is defined if MACOS\Windows.h is included beforehand. This behavior occurs because GetWrapperWindow, along with other symbols, is in a section dependent upon __WINDOWS__ being defined. MACOS\Windows.h defines __WINDOWS__ . Below is a list of some of the more commonly-used symbols and the required header file. The header file must be included before Winwlm.h or Afxwin.h and surrounded by the inclusion Macname1.h and Macname2.h. For example:
Symbol Include ------ ---------------- CFragConnectionID macos/codefrag.h //__CODEFRAGMENTS__CFragInitBlockPtr WlmInit WlmTerm WrapInstance UnwrapInstance GetMacInstanceInformation MenuRef macos/menus.h //__MENUS__WlmInitEx CheckoutMenu WrapMenu UnwrapMenu UpdateMenuBar WindowRef macos/windows.h //__WINDOWS__ActivateForeignWindow GetWindowWrapper GetWrapperWindow GetWrapperContainerWindow WrapWindow WrapWindowMinimal UnwrapWindow DialogRef macos/dialogs.h //__DIALOGS__ AfxGetNextEvent macos/events.h //__EVENTS__AfxWaitNextEvent AfxEventAvail AfxGetOSEvent AfxOSEventAvail GrafPortToClient macos/types.h //__TYPES__If these header files are not included, the following error messages are generated:
error C2065: 'GetWrapperWindow' : undeclared identifier error C2064: term does not evaluate to a functionIf the following errors occur after including these headers
warning C4003: not enough actual parameters for macro 'GetItem' error C2059: syntax error : ',' warning C4003: not enough actual parameters for macro 'SetItem' error C2059: syntax error : ',' ...it is because the Afxcmn.h header file was included later. The Afxcmn.h header file contains GetItem and SetItem member functions of several MFC classes that conflict with the ones defined in MACOS\Menus.h. For example:
// macos/Menus.h #if OLDROUTINENAMES ... #define SetItem(theMenu, item, itemString) SetMenuItemText(theMenu, item, itemString) #define GetItem(theMenu, item, itemString) GetMenuItemText(theMenu, item, itemString) ... #endif // OLDROUTINENAMESThe workaround is to define OLDROUTINENAMES as 0. Below is an example of a typical MFC project's Stdafx.h file. This project uses the common controls. For example:
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include <macname1.h> #define OLDROUTINENAMES 0 #include <macos/windows.h> #include <macname2.h> #include <afxwin.h> // includes Winwlm.h #include <afxext.h> #include <afxcmn.h> REFERENCESBooks Online (c) Microsoft Corporation 1997, All Rights Reserved. Contributions by Adam Kim, Microsoft Corporation Keywords : MfcMac VCMac kberrmsg Version : MACINTOSH:4.0,4.0b Platform : MACINTOSH Issue type : kbprb |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |