I can not seem to pass the results of my queries into the parameters of my functions. Please look at the rOut parameter of the PeekMessage function and GetMessage function. As you can see I have even used a pointer to try the pass but Dark Basic refuses to pass information to the parameter of a function for me. Is this a technical issue or limitation?
REMSTART
**Author: Darian A. Glinski
**Company: Digital Reality
**Copyright: June 2010, All rights Reserved
**Description: Digital Reality Messaging
REMEND
#CONSTANT NULL 0
#CONSTANT FAIL -1
#CONSTANT FALSE 0
#CONSTANT TRUE 1
REMSTART
**Post Message Constants**
REMEND
#CONSTANT PM_NOREMOVE 100
#CONSTANT PM_REMOVE 105
REMSTART
**System Messages**
REMEND
#CONSTANT DRM_INITIALIZE_SYSTEM 1000
#CONSTANT DRM_TERMINATE_SYSTEM 1005
#CONSTANT DRM_INITIALIZE_DISPLAY 1010
#CONSTANT DRM_INITIALIZE_MEDIA 1015
TYPE MESSAGE
UMsg AS INTEGER
X AS FLOAT
Y AS FLOAT
Z AS FLOAT
LParam AS INTEGER
WParam AS INTEGER
Remove AS INTEGER
ENDTYPE
FUNCTION Initialize()
DISABLE SYSTEMKEYS: DISABLE ESCAPEKEY
GLOBAL DIM g_bKernel(0) AS MESSAGE
PostMessage(DRM_INITIALIZE_SYSTEM, 0, 0, 0, 0, 0)
PostMessage(DRM_INITIALIZE_DISPLAY, 0, 0, 0, 0, 0)
PostMessage(DRM_INITIALIZE_MEDIA, 0, 0, 0, 0, 0)
ENDFUNCTION
FUNCTION Terminate()
UNDIM g_bKernel(0)
ENABLE ESCAPEKEY: ENABLE SYSTEMKEYS
ENDFUNCTION
REMSTART
**Returns Number of Messages In Queue**
REMEND
FUNCTION GetMessageCount()
nResult = ARRAY COUNT(g_bKernel(0))
ENDFUNCTION nResult
REMSTART
**Posts A Message**
REMEND
FUNCTION PostMessage(uMsg AS DWORD, nX AS FLOAT, nY AS FLOAT, nZ AS FLOAT, lParam AS DWORD, wParam AS DWORD)
nResult AS INTEGER
IF uMsg <> 0
ADD TO QUEUE g_bKernel(0)
g_bKernel().UMsg = uMsg
g_bKernel().X = nX
g_bKernel().Y = nY
g_bKernel().Z = nZ
g_bKernel().LParam = lParam
g_bKernel().WParam = wParam
g_bKernel().Remove = PM_NOREMOVE
nResult = GetMessageCount()
ELSE
nResult = FAIL
ENDIF
ENDFUNCTION nResult
REMSTART
**Get Next Message**
REMEND
FUNCTION GetMessage(rOut AS MESSAGE)
ARRAY INDEX TO QUEUE g_bKernel(0)
WHILE ARRAY INDEX VALID(g_bKernel()) = TRUE
IF g_bKernel().Remove = PM_NOREMOVE
g_bKernel().Remove = PM_REMOVE
*rOut = g_bKernel()
EXIT
ENDIF
NEXT ARRAY INDEX g_bKernel(0)
ENDWHILE
ENDFUNCTION 0
REMSTART
**Finds A Specific Message**
REMEND
FUNCTION PeekMessage(rOut AS MESSAGE, uMsg AS DWORD, pmRemove AS DWORD)
nResult AS INTEGER
ARRAY INDEX TO QUEUE g_bKernel(0)
WHILE ARRAY INDEX VALID(g_bKernel()) = TRUE
IF g_bKernel().UMsg = uMsg AND g_bKernel().Remove = PM_NOREMOVE
g_bKernel().Remove = pmRemove
*rOut = g_bKernel()
nResult = TRUE
EXIT
ELSE
nResult = FAIL
ENDIF
NEXT ARRAY INDEX g_bKernel(0)
ENDWHILE
ENDFUNCTION nResult
REMSTART
**Clears Handled Messages**
REMEND
FUNCTION DispatchMessages()
ARRAY INDEX TO QUEUE g_bKernel(0)
WHILE ARRAY INDEX VALID(g_bKernel()) = TRUE
IF g_bKernel().Remove = PM_REMOVE
REMOVE FROM QUEUE g_bKernel()
ENDIF
NEXT ARRAY INDEX g_bKernel(0)
ENDWHILE
ENDFUNCTION
Strategic Simulations