version 2003
PA_Get4DWinMacOSGlobals void *
Parameter | Type | Description | ||||
This command does not require any parameters | ||||||
Function result | void * | Pointer to a MG structure, defined by Altura | ||||
Mac2Win (0 under MacOS) |
Description
The routine PA_Get4DWinMacOSGlobals returns a pointer to the MacOS global variables data structure maintained by the Windows version of 4th Dimension.
This data structure is defined in the Altura Mac2Win header file "ASIEXTRN.h" below:
typedef struct { short mg_size; short mg_version; short *mg_SFSaveDisk; long *mg_CurDirStore; short *mg_SFVRefNum; GDHandle *mg_MainDevice; GDHandle *mg_DeviceList; GrafPtr *mg_WMgrPort; struct QHdr *mg_EventQueue; short *mg_MBarHeight; short *mg_MemErr; RgnHandle *mg_GrayRgn; WindowPeek *mg_WindowList; GrafPt *mg_thePort; Pattern *mg_white; Pattern *mg_black; Pattern *mg_gray; Pattern *mg_ltGray; Pattern *mg_dkGray; Cursor *mg_arrow; BitMap *mg_screenBits; long *mg_randSeed; ScrapStuff *mg_ScrapInfo; short *mg_PrintErr; long *mg_Ticks; Ptr *mg_ApplLimit; THz *mg_ApplZone; Ptr *mg_CurrentA5; Ptr *mg_CurStackBase; long *mg_CaretTime; WindowPtr *mg_CurActivate; char *mg_HilightMode; GDHandle *mg_TheGDevice; short *mg_ResErr; char *mg_CrsrNew; RGBColor *mg_HilightRGB; char *mg_MBState; Point *mg_MTemp; Point *mg_Mouse; Point *mg_RawMouse; char *mg_FractEnable; WidthTableHandle *mg_WidthTabHandle; short *mg_TheMenu; ProcPtr *mg_ResumeProc; short *mg_SysEvtMask; long *mg_DoubleTime; THz *mg_TheZone; Handle *mg_MenuList; short *mg_MenuFlash; short *mg_TEScrpLength; Handle *mg_TEScrpHandle; Boolean *mg_ResLoad; short *mg_PaintWhite; long *mg_MenuDisable; WindowPtr *mg_CurDeactive; short *mg_KeyThresh; short *mg_TEScrpHasStyle; Handle *mg_TEScrpStyleHandle; Handle *mg_AppParmHandle; short *mg_AtMenuBottom; short *mg_TopMenuItem; } MG, *pMG, **hMG
This routine is not available for the Macintosh version of 4th Dimension. If the 4D plug-in calls this routine on Macintosh it simply returns 0L and an error -1 in PA_GetLastError.
Usually the 4D plug-in will access this data structure in order to read the value of Macintosh OS global variables. For example, under the Windows platform, while writing a 4D plug-in using Altura's Mac2Win technology, the 4D plug-in may need to know the value of CurDirStore. To accomplish this, the 4D plug-in calls this routine and reads the field "mg_CurDirStore".
There is no way for 4th Dimension to forbid changing one of these values. If the 4D plug-in does so, it is at its own risk. Changing a value of an OS global variable may have effects and/or side effects different than those which are familiar on a Macintosh platform.
Example
Getting the WindowList under MacOS and Windows + Altura Mac2Win:
#include "ASIEXTRN.h" WindowPtr w; #if VERSIONWIN MG *macGlob; macGlob = PA_Get4DWinMacOSGlobals(); w = (WindowPtr) *macGlob->mg_WindowList; #endif #if VERSIONMAC w = LMGetWindowList(); #endif /* . . . work with the window list . . . */
See Also
No reference.
Error Handling
PA_Get4DWinMacOSGlobals returns always eER_NoErr under Windows, and -1 under MacOS