Yup. I'm back at this. The MSFS community has voiced an interest in creating a HUD window display to be used while flying. I really think PB is the answer to what they want. And, I know this would get more notice from other programmers on the MSFS.com and FSDeveloper.com forums.
I need your help to get the data. I have spent the last two days cleaning up some code that I downloaded from here:
https://github.com/aziascreations/FS202 ... c-Bindings
I am having trouble with structure pointers and addresses. The code below compiles but it is wrong. I have marked the code that is erroring out, and I have more code at the bottom that I have no idea how to declare.
If anyone could help me I would "really" appreciate it. I am converting from C++ code to PB. You see the posts above. The C++ code (post above) is working just fine. But I want to do it in PB!
Below are some Google drive links to SimConnect.dll and SimConnect.lib for compiling purposes.
SimConnect.lib:
https://drive.google.com/file/d/1NBKTE8 ... sp=sharing
SimConnect.dll:
https://drive.google.com/file/d/1Riw2MM ... sp=sharing
This code is the MSFS SimConnect.h file converted into a SimConnect.pbi file. Don't trust this! I did the best I could do to set everything properly:
Code: Select all
;Original Author: https://github.com/aziascreations
;Original file location: https://github.com/aziascreations/FS2020---SimConnect-PureBasic-Bindings
; Macros
Macro LONG : l : EndMacro
Macro DWORD : l : EndMacro
Macro HANDLE : i : EndMacro
Macro HRESULT : LONG : EndMacro
Macro HWND : HANDLE : EndMacro
Macro WORD : w : EndMacro
CompilerIf Not #PB_Compiler_OS = #PB_OS_Windows
CompilerError "Error: Please compile this program on a Windows machine!"
CompilerEndIf
CompilerIf Not #PB_Compiler_Processor = #PB_Processor_x64
CompilerError "Error: Please compile the program for a x64 cpu architecture!"
CompilerEndIf
EnableExplicit
; Constants
#DWORD_MAX = $FFFFFFFF
; DWORDs
; special value to indicate unused event, ID
#SIMCONNECT_UNUSED = #DWORD_MAX
; proxy value for User vehicle ObjectID
#SIMCONNECT_OBJECT_ID_USER = 0
; Floats
; Maximum value for SimConnect_CreateClientData dwSize parameter
#SIMCONNECT_CLIENTDATA_MAX_SIZE = 8192
; Notification Group priority values
#SIMCONNECT_GROUP_PRIORITY_HIGHEST = 1 ; highest priority
#SIMCONNECT_GROUP_PRIORITY_HIGHEST_MASKABLE = 10000000 ; highest priority that allows events to be masked
#SIMCONNECT_GROUP_PRIORITY_STANDARD = 1900000000 ; standard priority
#SIMCONNECT_GROUP_PRIORITY_DEFAULT = 2000000000 ; default priority
#SIMCONNECT_GROUP_PRIORITY_LOWEST = 4000000000 ; priorities lower than this will be ignored
; SIMCONNECT_DATA_INITPOSITION.Airspeed
#INITPOSITION_AIRSPEED_CRUISE = -1 ; aircraft's cruise airspeed
#INITPOSITION_AIRSPEED_KEEP = -2 ; keep current airspeed
; AddToClientDataDefinition dwSizeOrType parameter type values
#SIMCONNECT_CLIENTDATATYPE_INT8 = -1 ; 8-bit integer number
#SIMCONNECT_CLIENTDATATYPE_INT16 = -2 ; 16-bit integer number
#SIMCONNECT_CLIENTDATATYPE_INT32 = -3 ; 32-bit integer number
#SIMCONNECT_CLIENTDATATYPE_INT64 = -4 ; 64-bit integer number
#SIMCONNECT_CLIENTDATATYPE_FLOAT32 = -5 ; 32-bit floating-point number (float)
#SIMCONNECT_CLIENTDATATYPE_FLOAT64 = -6 ; 64-bit floating-point number (double)
; AddToClientDataDefinition dwOffset parameter special values
#SIMCONNECT_CLIENTDATAOFFSET_AUTO = -1 ; automatically compute offset of the ClientData variable
; Open ConfigIndex parameter special value
#SIMCONNECT_OPEN_CONFIGINDEX_LOCAL = -1 ; ignore SimConnect.cfg settings, and force local connection
;- Macros
Macro SIMCONNECT_OBJECT_ID : DWORD : EndMacro
Macro SIMCONNECT_NOTIFICATION_GROUP_ID : DWORD : EndMacro
Macro SIMCONNECT_CLIENT_EVENT_ID : DWORD : EndMacro
Macro SIMCONNECT_TEXT_TYPE : DWORD : EndMacro
Macro SIMCONNECT_DATA_DEFINITION_ID : DWORD : EndMacro
Macro SIMCONNECT_DATATYPE_TYPE : DWORD : EndMacro
Macro SIMCONNECT_DATA_REQUEST_ID : DWORD : EndMacro
Macro SIMCONNECT_SIMOBJECT_TYPE_TYPE: DWORD : EndMacro
;- Enums
Enumeration SIMCONNECT_RECV_ID
#SIMCONNECT_RECV_ID_NULL
#SIMCONNECT_RECV_ID_EXCEPTION
#SIMCONNECT_RECV_ID_OPEN
#SIMCONNECT_RECV_ID_QUIT
#SIMCONNECT_RECV_ID_EVENT
#SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE
#SIMCONNECT_RECV_ID_EVENT_FILENAME
#SIMCONNECT_RECV_ID_EVENT_FRAME
#SIMCONNECT_RECV_ID_SIMOBJECT_DATA
#SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE
#SIMCONNECT_RECV_ID_WEATHER_OBSERVATION
#SIMCONNECT_RECV_ID_CLOUD_STATE
#SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID
#SIMCONNECT_RECV_ID_RESERVED_KEY
#SIMCONNECT_RECV_ID_CUSTOM_ACTION
#SIMCONNECT_RECV_ID_SYSTEM_STATE
#SIMCONNECT_RECV_ID_CLIENT_DATA
#SIMCONNECT_RECV_ID_EVENT_WEATHER_MODE
#SIMCONNECT_RECV_ID_AIRPORT_LIST
#SIMCONNECT_RECV_ID_VOR_LIST
#SIMCONNECT_RECV_ID_NDB_LIST
#SIMCONNECT_RECV_ID_WAYPOINT_LIST
#SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED
#SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED
#SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED
#SIMCONNECT_RECV_ID_EVENT_RACE_END
#SIMCONNECT_RECV_ID_EVENT_RACE_LAP
EndEnumeration
; Data data types
Enumeration SIMCONNECT_DATATYPE
#SIMCONNECT_DATATYPE_INVALID ; invalid data type
#SIMCONNECT_DATATYPE_INT32 ; 32-bit integer number
#SIMCONNECT_DATATYPE_INT64 ; 64-bit integer number
#SIMCONNECT_DATATYPE_FLOAT32 ; 32-bit floating-point number (float)
#SIMCONNECT_DATATYPE_FLOAT64 ; 64-bit floating-point number (double)
#SIMCONNECT_DATATYPE_STRING8 ; 8-byte string
#SIMCONNECT_DATATYPE_STRING32 ; 32-byte string
#SIMCONNECT_DATATYPE_STRING64 ; 64-byte string
#SIMCONNECT_DATATYPE_STRING128 ; 128-byte string
#SIMCONNECT_DATATYPE_STRING256 ; 256-byte string
#SIMCONNECT_DATATYPE_STRING260 ; 260-byte string
#SIMCONNECT_DATATYPE_STRINGV ; variable-length string
#SIMCONNECT_DATATYPE_INITPOSITION ; see SIMCONNECT_DATA_INITPOSITION
#SIMCONNECT_DATATYPE_MARKERSTATE ; see SIMCONNECT_DATA_MARKERSTATE
#SIMCONNECT_DATATYPE_WAYPOINT ; see SIMCONNECT_DATA_WAYPOINT
#SIMCONNECT_DATATYPE_LATLONALT ; see SIMCONNECT_DATA_LATLONALT
#SIMCONNECT_DATATYPE_XYZ ; see SIMCONNECT_DATA_XYZ
#SIMCONNECT_DATATYPE_MAX ; enum limit
EndEnumeration
; Exception error types
Enumeration SIMCONNECT_EXCEPTION
#SIMCONNECT_EXCEPTION_NONE
#SIMCONNECT_EXCEPTION_ERROR
#SIMCONNECT_EXCEPTION_SIZE_MISMATCH
#SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID
#SIMCONNECT_EXCEPTION_UNOPENED
#SIMCONNECT_EXCEPTION_VERSION_MISMATCH
#SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS
#SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED
#SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES
#SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE
#SIMCONNECT_EXCEPTION_TOO_MANY_MAPS
#SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS
#SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS
#SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT
#SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR
#SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION
#SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION
#SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION
#SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE
#SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE
#SIMCONNECT_EXCEPTION_DATA_ERROR
#SIMCONNECT_EXCEPTION_INVALID_ARRAY
#SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED
#SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED
#SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OBJECT_TYPE
#SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION
#SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED
#SIMCONNECT_EXCEPTION_INVALID_ENUM
#SIMCONNECT_EXCEPTION_DEFINITION_ERROR
#SIMCONNECT_EXCEPTION_DUPLICATE_ID
#SIMCONNECT_EXCEPTION_DATUM_ID
#SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS
#SIMCONNECT_EXCEPTION_ALREADY_CREATED
#SIMCONNECT_EXCEPTION_OBJECT_OUTSIDE_REALITY_BUBBLE
#SIMCONNECT_EXCEPTION_OBJECT_CONTAINER
#SIMCONNECT_EXCEPTION_OBJECT_AI
#SIMCONNECT_EXCEPTION_OBJECT_ATC
#SIMCONNECT_EXCEPTION_OBJECT_SCHEDULE
EndEnumeration
; Object types
Enumeration SIMCONNECT_SIMOBJECT_TYPE
#SIMCONNECT_SIMOBJECT_TYPE_USER
#SIMCONNECT_SIMOBJECT_TYPE_ALL
#SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT
#SIMCONNECT_SIMOBJECT_TYPE_HELICOPTER
#SIMCONNECT_SIMOBJECT_TYPE_BOAT
#SIMCONNECT_SIMOBJECT_TYPE_GROUND
EndEnumeration
; EventState values
Enumeration SIMCONNECT_STATE
#SIMCONNECT_STATE_OFF
#SIMCONNECT_STATE_ON
EndEnumeration
; Object Data Request Period values
Enumeration SIMCONNECT_PERIOD
#SIMCONNECT_PERIOD_NEVER
#SIMCONNECT_PERIOD_ONCE
#SIMCONNECT_PERIOD_VISUAL_FRAME
#SIMCONNECT_PERIOD_SIM_FRAME
#SIMCONNECT_PERIOD_SECOND
EndEnumeration
; Missions
Enumeration SIMCONNECT_MISSION_END
#SIMCONNECT_MISSION_FAILED
#SIMCONNECT_MISSION_CRASHED
#SIMCONNECT_MISSION_SUCCEEDED
EndEnumeration
; ClientData Request Period values
Enumeration SIMCONNECT_CLIENT_DATA_PERIOD
#SIMCONNECT_CLIENT_DATA_PERIOD_NEVER
#SIMCONNECT_CLIENT_DATA_PERIOD_ONCE
#SIMCONNECT_CLIENT_DATA_PERIOD_VISUAL_FRAME
#SIMCONNECT_CLIENT_DATA_PERIOD_ON_SET
#SIMCONNECT_CLIENT_DATA_PERIOD_SECOND
EndEnumeration
; Equates
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_VOR_FLAGS ; flags for SIMCONNECT_RECV_ID_VOR_LIST
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_NAV_SIGNAL = $00000001 ; Has Nav signal
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_LOCALIZER = $00000002 ; Has localizer
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_GLIDE_SLOPE = $00000004 ; Has Nav signal
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_DME = $00000008 ; Station has DME
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_EVENT_FLAG
#SIMCONNECT_EVENT_FLAG_DEFAULT = $00000000
#SIMCONNECT_EVENT_FLAG_FAST_REPEAT_TIMER = $00000001 ; set event repeat timer to simulate fast repeat
#SIMCONNECT_EVENT_FLAG_SLOW_REPEAT_TIMER = $00000002 ; set event repeat timer to simulate slow repeat
#SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY = $00000010 ; interpret GroupID parameter as priority value
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_DATA_REQUEST_FLAG
#SIMCONNECT_DATA_REQUEST_FLAG_DEFAULT = $00000000
#SIMCONNECT_DATA_REQUEST_FLAG_CHANGED = $00000001 ; send requested data when value(s) change
#SIMCONNECT_DATA_REQUEST_FLAG_TAGGED = $00000002 ; send requested data in tagged format
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_DATA_SET_FLAG
#SIMCONNECT_DATA_SET_FLAG_DEFAULT = $00000000
#SIMCONNECT_DATA_SET_FLAG_TAGGED = $00000001 ; data is in tagged format
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_CREATE_CLIENT_DATA_FLAG
#SIMCONNECT_CREATE_CLIENT_DATA_FLAG_DEFAULT = $00000000
#SIMCONNECT_CREATE_CLIENT_DATA_FLAG_READ_ONLY = $00000001 ; permit only ClientData creator to write into ClientData
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_CLIENT_DATA_REQUEST_FLAG
#SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_DEFAULT = $00000000
#SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_CHANGED = $00000001 ; send requested ClientData when value(s) change
#SIMCONNECT_CLIENT_DATA_REQUEST_FLAG_TAGGED = $00000002 ; send requested ClientData in tagged format
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_CLIENT_DATA_SET_FLAG
#SIMCONNECT_CLIENT_DATA_SET_FLAG_DEFAULT = $00000000
#SIMCONNECT_CLIENT_DATA_SET_FLAG_TAGGED = $00000001 ; data is in tagged format
;SIMCONNECT_ENUM_FLAGS SIMCONNECT_VIEW_SYSTEM_EVENT_DATA ; dwData contains these flags for the "View" System Event
#SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_COCKPIT_2D = $00000001 ; 2D Panels IN cockpit view
#SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_COCKPIT_VIRTUAL = $00000002 ; Virtual (3D) panels in cockpit view
#SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_ORTHOGONAL = $00000004 ; Orthogonal (Map) view
;- Structures
; SIMCONNECT_REFSTRUCT SIMCONNECT_RECV
; {
; DWORD dwSize; // record size
; DWORD dwVersion; // interface version
; DWORD dwID; // see SIMCONNECT_RECV_ID
; };
Structure SIMCONNECT_RECV Align 1
dwSize.DWORD
dwVersion.DWORD
dwID.DWORD
EndStructure
; SIMCONNECT_REFSTRUCT SIMCONNECT_RECV_EXCEPTION : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_EXCEPTION
; {
; DWORD dwException; // see SIMCONNECT_EXCEPTION
; Static const DWORD UNKNOWN_SENDID = 0;
; DWORD dwSendID; // see SimConnect_GetLastSentPacketID
; Static const DWORD UNKNOWN_INDEX = DWORD_MAX;
; DWORD dwIndex; // index of parameter that was source of error
; };
Structure SIMCONNECT_RECV_EXCEPTION Extends SIMCONNECT_RECV Align 1
dwException.DWORD
dwSendID.DWORD
dwIndex.DWORD
EndStructure
; SIMCONNECT_REFSTRUCT SIMCONNECT_RECV_OPEN : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_OPEN
; {
; SIMCONNECT_STRING( szApplicationName, 256);
; DWORD dwApplicationVersionMajor;
; DWORD dwApplicationVersionMinor;
; DWORD dwApplicationBuildMajor;
; DWORD dwApplicationBuildMinor;
; DWORD dwSimConnectVersionMajor;
; DWORD dwSimConnectVersionMinor;
; DWORD dwSimConnectBuildMajor;
; DWORD dwSimConnectBuildMinor;
; DWORD dwReserved1;
; DWORD dwReserved2;
; };
Structure SIMCONNECT_RECV_OPEN Extends SIMCONNECT_RECV Align 1
szApplicationName.a[256] ; Can't be read with a PeekS apparently...
dwApplicationVersionMajor.DWORD
dwApplicationVersionMinor.DWORD
dwApplicationBuildMajor.DWORD
dwApplicationBuildMinor.DWORD
dwSimConnectVersionMajor.DWORD
dwSimConnectVersionMinor.DWORD
dwSimConnectBuildMajor.DWORD
dwSimConnectBuildMinor.DWORD
dwReserved1.DWORD
dwReserved2.DWORD
EndStructure
; SIMCONNECT_REFSTRUCT SIMCONNECT_RECV_EVENT : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_EVENT
; {
; Static const DWORD UNKNOWN_GROUP = DWORD_MAX;
; DWORD uGroupID;
; DWORD uEventID;
; DWORD dwData; // uEventID-dependent context
; };
Structure SIMCONNECT_RECV_EVENT Extends SIMCONNECT_RECV Align 1
uGroupID.DWORD
uEventID.DWORD
dwData.DWORD
EndStructure
; SIMCONNECT_REFSTRUCT SIMCONNECT_RECV_SIMOBJECT_DATA : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_SIMOBJECT_DATA
; {
; DWORD dwRequestID;
; DWORD dwObjectID;
; DWORD dwDefineID;
; DWORD dwFlags; // SIMCONNECT_DATA_REQUEST_FLAG
; DWORD dwentrynumber; // if multiple objects returned, this is number <entrynumber> out of <outof>.
; DWORD dwoutof; // note: starts with 1, not 0.
; DWORD dwDefineCount; // data count (number of datums, *not* byte count)
; SIMCONNECT_DATAV( dwData, dwDefineID, ); // data begins here, dwDefineCount data items
; };
Structure SIMCONNECT_RECV_SIMOBJECT_DATA Extends SIMCONNECT_RECV Align 1
dwRequestID.DWORD
dwObjectID.DWORD
dwDefineID.DWORD
dwFlags.DWORD
dwentrynumber.DWORD
dwoutof.DWORD
dwDefineCount.DWORD
dwData.DWORD
EndStructure
;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; Simmconect lib path.
CompilerIf Not Defined(SIMCONNECT_LIB_PATH, #PB_Constant)
#SIMCONNECT_LIB_PATH = "SimConnect.lib"
CompilerEndIf
;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Import #SIMCONNECT_LIB_PATH
SimConnect_Open(*hSimConnect, szName.s, hWnd.HWND, UserEventWin32.DWORD, hEventHandle.HANDLE, ConfigIndex.DWORD)
SimConnect_AddToDataDefinition(hSimConnect.HANDLE, DefineID.SIMCONNECT_DATA_DEFINITION_ID, *DatumName, *UnitsName, DatumType.SIMCONNECT_DATATYPE_TYPE = #SIMCONNECT_DATATYPE_FLOAT64, fEpsilon.f = 0, DatumID.DWORD = #SIMCONNECT_UNUSED)
SimConnect_RequestDataOnSimObject(hSimConnect.HANDLE, Request.DWORD, DefineID.SIMCONNECT_DATA_DEFINITION_ID, Period.DWORD, Flags.DWORD);
SimConnect_GetNextDispatch(hSimConnect.HANDLE, *pData.SIMCONNECT_RECV, DWORD);
SimConnect_Close(hSimConnect.HANDLE)
; SimConnect.h Prototypes:
; SimConnect_Open(HANDLE * phSimConnect, LPCSTR szName, HWND hWnd, DWORD UserEventWin32, HANDLE hEventHandle, DWORD ConfigIndex);
; SimConnect_AddToDataDefinition(HANDLE hSimConnect, SIMCONNECT_DATA_DEFINITION_ID DefineID, const char * DatumName, const char * UnitsName, SIMCONNECT_DATATYPE DatumType = SIMCONNECT_DATATYPE_FLOAT64, float fEpsilon = 0, DWORD DatumID = SIMCONNECT_UNUSED);
; SimConnect_RequestDataOnSimObject(HANDLE hSimConnect, SIMCONNECT_DATA_REQUEST_ID RequestID, SIMCONNECT_DATA_DEFINITION_ID DefineID, +
; SIMCONNECT_OBJECT_ID ObjectID, +
; SIMCONNECT_PERIOD Period, +
; SIMCONNECT_DATA_REQUEST_FLAG Flags = 0);
; SimConnect_GetNextDispatch(HANDLE hSimConnect, SIMCONNECT_RECV ** ppData, DWORD * pcbData);
; SimConnect_Close(HANDLE hSimConnect);
EndImport
And this is the main program. The code at lines: 57 and 86 are incorrect. But, I have no idea what I am doing at this point. But I am really close! Help me, please!
Code: Select all
EnableExplicit
XIncludeFile "SimConnect.pbi"
;//////////////////////////////////////////////////////////////////////////////////////////////////////
Define hSimConnect.HANDLE = #Null
Define hr.HRESULT
Enumeration Data_Define_ID
#Data_Defination
EndEnumeration
Enumeration Data_Request_ID
#Data_Request
EndEnumeration
Structure MSFS_Data Align 1
IALT.d
EndStructure
Global MSFS.MSFS_Data
Define pData.SIMCONNECT_RECV
Define cbData = #Null
;//////////////////////////////////////////////////////////////////////////////////////////////////////
Enumeration
#WIN
#TIMER
#IALT
EndEnumeration
Define Done
Define Event
;//////////////////////////////////////////////////////////////////////////////////////////////////////
hr = SimConnect_Open(@hSimConnect, "MSFS 2020", #Null, 0, 0, #SIMCONNECT_OPEN_CONFIGINDEX_LOCAL)
If hr <> 0
Debug "Open Error: " + Str(hr)
End
EndIf
hr = SimConnect_AddToDataDefinition(hSimConnect.HANDLE, #Data_Defination, "INDICATED ALTITUDE", "Feet")
If hr <> 0
Debug "Add Definition Error: " + Str(hr)
End
EndIf
hr = SimConnect_RequestDataOnSimObject(hSimConnect, #Data_Request, #Data_Defination, 0, #SIMCONNECT_PERIOD_VISUAL_FRAME);
If hr <> 0
Debug "Request Data Error: " + Str(hr)
End
EndIf
;////////////////////////////////////////////////////////////////////
;//// Errors out here... Pointer, to a pointer, to a pointer, yuck...
;////////////////////////////////////////////////////////////////////
; C++: SimConnect_GetNextDispatch(HANDLE hSimConnect, SIMCONNECT_RECV ** ppData, DWORD * pcbData);
hr = SimConnect_GetNextDispatch(hSimConnect, @pData, @cbData)
If hr <> 0
Debug "GetNext Disptach Error: " + Str(hr) ; -2147467259: Error
End
EndIf
OpenWindow(0, 5500, 1000, 195, 260, "MSFS 2020", #PB_Window_SystemMenu)
AddWindowTimer(#WIN,#TIMER ,15)
TextGadget(#IALT, 23, 42, 100, 25, "")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Done = #True
Case #PB_Event_Timer
If EventTimer() = #TIMER
;/////////////////////////////////////////////////////////////////
;/// I have no idea how to assign this, from c++ to PB:
;/////////////////////////////////////////////////////////////////
; pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA*)pData;
; If (pData->dwID == SIMCONNECT_RECV_ID_SIMOBJECT_DATA && pObjData->dwRequestID == REQUEST_AP_SETTINGS)
; {
; pAutopilotData = (AutopilotData*)&pObjData->dwData;
If @pData\dwID = #Data_Request
MSFS\iALT = *pData.\dwData ;This needs to be set correctly. It compiles...
SetGadgetText(#IALT,Str(MSFS\IALT))
EndIf
EndIf
EndSelect
Until Done = #True
CloseWindow(#WIN)
SimConnect_Close(hSimConnect)
Here is what I am working towards. Now I just need the data for the window:
https://drive.google.com/file/d/16wEBks ... sp=sharing