Lines 4861, Functions/Procedures 1
Generating C source output to 'dshow.c'... Done.
dshow.c
dshow.prg(22): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(22): error C2065: 'ÿ': undeclared identifier
dshow.prg(22): error C2146: syntax error: missing ';' before identifier 'ÿHRESULT'
dshow.prg(22): error C2065: 'ÿHRESULT': undeclared identifier
dshow.prg(22): error C2146: syntax error: missing ';' before identifier 'hr'
dshow.prg(22): error C2065: 'hr': undeclared identifier
dshow.prg(23): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(23): error C2065: 'ÿ': undeclared identifier
dshow.prg(23): error C2146: syntax error: missing ';' before identifier 'ÿICreateDevEnum'
dshow.prg(23): error C2065: 'ÿICreateDevEnum': undeclared identifier
dshow.prg(23): error C2065: 'pDevEnum': undeclared identifier
dshow.prg(24): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(24): error C2065: 'ÿ': undeclared identifier
dshow.prg(24): error C2146: syntax error: missing ';' before identifier 'ÿIEnumMoniker'
dshow.prg(24): error C2065: 'ÿIEnumMoniker': undeclared identifier
dshow.prg(24): error C2065: 'pEnum': undeclared identifier
dshow.prg(25): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(25): error C2065: 'ÿ': undeclared identifier
dshow.prg(25): error C2146: syntax error: missing ';' before identifier 'ÿIMoniker'
dshow.prg(25): error C2065: 'ÿIMoniker': undeclared identifier
dshow.prg(25): error C2065: 'pMoniker': undeclared identifier
dshow.prg(26): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(26): error C2065: 'ÿ': undeclared identifier
dshow.prg(26): error C2146: syntax error: missing ';' before identifier 'ÿIPropertyBag'
dshow.prg(26): error C2065: 'ÿIPropertyBag': undeclared identifier
dshow.prg(26): error C2065: 'pPropBag': undeclared identifier
dshow.prg(27): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(27): error C2065: 'ÿ': undeclared identifier
dshow.prg(27): error C2146: syntax error: missing ';' before identifier 'ÿIGraphBuilder'
dshow.prg(27): error C2065: 'ÿIGraphBuilder': undeclared identifier
dshow.prg(27): error C2065: 'pGraph': undeclared identifier
dshow.prg(28): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(28): error C2065: 'ÿ': undeclared identifier
dshow.prg(28): error C2146: syntax error: missing ';' before identifier 'ÿICaptureGraphBuilder2'
dshow.prg(28): error C2065: 'ÿICaptureGraphBuilder2': undeclared identifier
dshow.prg(28): error C2065: 'pBuilder': undeclared identifier
dshow.prg(29): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(29): error C2065: 'ÿ': undeclared identifier
dshow.prg(29): error C2146: syntax error: missing ';' before identifier 'ÿIBaseFilter'
dshow.prg(29): error C2065: 'ÿIBaseFilter': undeclared identifier
dshow.prg(29): error C2065: 'pCap': undeclared identifier
dshow.prg(30): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(30): error C2065: 'ÿ': undeclared identifier
dshow.prg(30): error C2146: syntax error: missing ';' before identifier 'ÿIBaseFilter'
dshow.prg(30): error C2065: 'ÿIBaseFilter': undeclared identifier
dshow.prg(30): error C2065: 'pSampleGrabberFilter': undeclared identifier
dshow.prg(31): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(31): error C2065: 'ÿ': undeclared identifier
dshow.prg(31): error C2146: syntax error: missing ';' before identifier 'ÿIBaseFilter'
dshow.prg(31): error C2065: 'ÿIBaseFilter': undeclared identifier
dshow.prg(31): error C2065: 'pNullRenderer': undeclared identifier
dshow.prg(32): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(32): error C2065: 'ÿ': undeclared identifier
dshow.prg(32): error C2146: syntax error: missing ';' before identifier 'ÿIMediaControl'
dshow.prg(32): error C2065: 'ÿIMediaControl': undeclared identifier
dshow.prg(32): error C2065: 'pMediaControl': undeclared identifier
dshow.prg(33): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(33): error C2065: 'ÿ': undeclared identifier
dshow.prg(33): error C2146: syntax error: missing ';' before identifier 'ÿchar'
dshow.prg(33): error C2065: 'ÿchar': undeclared identifier
dshow.prg(33): error C2065: 'pBuffer': undeclared identifier
dshow.prg(34): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(34): error C2065: 'ÿ': undeclared identifier
dshow.prg(34): error C2146: syntax error: missing ';' before identifier 'ÿVARIANT'
dshow.prg(34): error C2065: 'ÿVARIANT': undeclared identifier
dshow.prg(34): error C2146: syntax error: missing ';' before identifier 'var'
dshow.prg(34): error C2065: 'var': undeclared identifier
dshow.prg(35): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(35): error C2065: 'ÿ': undeclared identifier
dshow.prg(35): error C2146: syntax error: missing ';' before identifier 'ÿ'
dshow.prg(35): error C2144: syntax error: 'int' should be preceded by ';'
dshow.prg(36): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(36): error C2065: 'ÿ': undeclared identifier
dshow.prg(36): error C2146: syntax error: missing ';' before identifier 'ÿ'
dshow.prg(36): error C2144: syntax error: 'int' should be preceded by ';'
dshow.prg(37): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(37): error C2065: 'ÿ': undeclared identifier
dshow.prg(37): error C2146: syntax error: missing ';' before identifier 'ÿ'
dshow.prg(37): error C2144: syntax error: 'char' should be preceded by ';'
dshow.prg(38): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(38): error C2065: 'ÿ': undeclared identifier
dshow.prg(38): error C2146: syntax error: missing ';' before identifier 'ÿchar'
dshow.prg(38): error C2065: 'ÿchar': undeclared identifier
dshow.prg(38): error C2146: syntax error: missing ';' before identifier 'char_buffer'
dshow.prg(38): error C2065: 'char_buffer': undeclared identifier
dshow.prg(39): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(39): error C2653: 'ÿDexterLib': is not a class or namespace name
dshow.prg(39): error C2065: 'ÿ': undeclared identifier
dshow.prg(39): error C2146: syntax error: missing ';' before identifier 'ISampleGrabber'
dshow.prg(39): error C2065: 'ISampleGrabber': undeclared identifier
dshow.prg(39): error C2065: 'pSampleGrabber': undeclared identifier
dshow.prg(41): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(41): error C2065: 'ÿ': undeclared identifier
dshow.prg(41): error C2146: syntax error: missing ';' before identifier 'ÿstrcpy'
dshow.prg(41): error C3861: 'ÿstrcpy': identifier not found
dshow.prg(43): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(43): error C2065: 'ÿ': undeclared identifier
dshow.prg(43): error C2146: syntax error: missing ';' before identifier 'ÿhr'
dshow.prg(43): error C2065: 'ÿhr': undeclared identifier
dshow.prg(45): error C3873: '0xa0': this character is not allowed as a first character of an identifier
dshow.prg(45): error C2065: 'ÿ': undeclared identifier
dshow.prg(45): fatal error C1003: error count exceeds 100; stopping compilation
LINK : fatal error LNK1181: cannot open input file 'dshow.obj'
* Linking errors *
#include "FiveWin.ch"
function Main()
local oWnd, hWnd
DEFINE WINDOW oWnd
ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT ( DShowCamera(),;
SetParent( hWnd := FindWindow( 0, "ActiveMovie Window" ), oWnd:hWnd ),;
SetWindowPos( hWnd, 0, 10, 10, 300, 300 ) )
return nil
#pragma BEGINDUMP
#include <dshow.h>
#include <uuids.h>
#include <objbase.h>
#import "qedit.dll" raw_interfaces_only named_guids
EXTERN_C const CLSID CLSID_NullRenderer;
EXTERN_C const CLSID CLSID_SampleGrabber;
HB_FUNC( DSHOWCAMERA )
{
HRESULT hr;
ICreateDevEnum *pDevEnum = NULL;
IEnumMoniker *pEnum = NULL;
IMoniker *pMoniker = NULL;
IPropertyBag *pPropBag = NULL;
IGraphBuilder *pGraph = NULL;
ICaptureGraphBuilder2 *pBuilder = NULL;
IBaseFilter *pCap = NULL;
IBaseFilter *pSampleGrabberFilter = NULL;
IBaseFilter *pNullRenderer = NULL;
IMediaControl *pMediaControl = NULL;
char *pBuffer = NULL;
VARIANT var;
int n = 0;
int device_number = 0;
char device_name[ 100 ];
char char_buffer[100];
DexterLib::ISampleGrabber *pSampleGrabber = NULL;
strcpy( device_name, "" );
hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
if( hr != S_OK )
MessageBox( 0, "CoInitializeEx error", "ok", 0 );
hr = CoCreateInstance( CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_IGraphBuilder,
( void ** ) &pGraph );
if( hr != S_OK )
MessageBox( 0, "CoCreateInstance error", "ok", 0 );
hr = CoCreateInstance( CLSID_CaptureGraphBuilder2, NULL,
CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2,
( void ** ) &pBuilder );
if( hr != S_OK )
MessageBox( 0, "CoCreateInstance 2 error", "ok", 0 );
hr = ( ( ICaptureGraphBuilder * ) pBuilder )->SetFiltergraph( pGraph );
if( hr != S_OK )
MessageBox( 0, "Could not attach capture graph builder to graph", "ok", 0 );
hr = CoCreateInstance( CLSID_SystemDeviceEnum, NULL,
CLSCTX_INPROC_SERVER, IID_PPV_ARGS( &pDevEnum ) );
if( hr != S_OK )
MessageBox( 0, "Could not crerate system device enumerator", "ok", 0 );
hr = pDevEnum->CreateClassEnumerator(
CLSID_VideoInputDeviceCategory, &pEnum, 0 );
if( hr != S_OK )
MessageBox( 0, "No video devices found", "ok", 0 );
while(1)
{
// Access next device
hr = pEnum->Next(1, &pMoniker, NULL);
if( hr == S_OK )
n++; // increment device count
else
break;
// If device was specified by name rather than number...
if( device_number == 0 )
{
// Get video input device name
hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
if (hr == S_OK)
{
// Get current device name
VariantInit(&var);
hr = pPropBag->Read(L"FriendlyName", &var, 0);
// Convert to a normal C string, i.e. char*
sprintf(char_buffer, "%ls", var.bstrVal);
VariantClear(&var);
pPropBag->Release();
pPropBag = NULL;
// Exit loop if current device name matched devname
// MessageBox( 0, char_buffer, "device_name", 0 );
if (strcmp(device_name, char_buffer) == 0) break;
}
else
{
MessageBox( 0, "Error getting device names", "ok", 0 );
break;
}
}
else if (n >= device_number) break;
}
// Get video input device name
hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
VariantInit(&var);
hr = pPropBag->Read(L"FriendlyName", &var, 0);
// MessageBoxW( 0, L"Capture device", var.bstrVal, 0 );
VariantClear(&var);
// Create capture filter and add to graph
hr = pMoniker->BindToObject(0, 0,
IID_IBaseFilter, (void**)&pCap);
if( hr != S_OK )
MessageBox( 0, "Could not create capture filter", "ok", 0 );
// Add capture filter to graph
hr = pGraph->AddFilter(pCap, L"Capture Filter");
if( hr != S_OK )
MessageBox( 0, "Could not add capture filter to graph", "ok", 0 );
// Create sample grabber filter
hr = CoCreateInstance(CLSID_SampleGrabber, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter,
(void**)&pSampleGrabberFilter);
if( hr != S_OK )
MessageBox( 0, "Could not create Sample Grabber filter", "ok", 0 );
// Query the ISampleGrabber interface of the sample grabber filter
hr = pSampleGrabberFilter->QueryInterface(
DexterLib::IID_ISampleGrabber, (void**)&pSampleGrabber);
if( hr != S_OK )
MessageBox( 0, "Could not get ISampleGrabber interface to sample grabber filter", "ok", 0 );
// Enable sample buffering in the sample grabber filter
hr = pSampleGrabber->SetBufferSamples(TRUE);
if( hr != S_OK )
MessageBox( 0, "Could not enable sample buffering in the sample grabber", "ok", 0 );
// Set media type in sample grabber filter
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24;
hr = pSampleGrabber->SetMediaType((DexterLib::_AMMediaType *)&mt);
if( hr != S_OK )
MessageBox( 0, "Could not set media type in sample grabber", "ok", 0 );
// Add sample grabber filter to filter graph
hr = pGraph->AddFilter(pSampleGrabberFilter, L"SampleGrab");
if( hr != S_OK )
MessageBox( 0, "Could not add Sample Grabber to filter graph", "ok", 0 );
// Create Null Renderer filter
hr = CoCreateInstance(CLSID_NullRenderer, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter,
(void**)&pNullRenderer);
if( hr != S_OK )
MessageBox( 0, "Could not create Null Renderer filter", "ok", 0 );
// Add Null Renderer filter to filter graph
hr = pGraph->AddFilter(pNullRenderer, L"NullRender");
if( hr != S_OK )
MessageBox( 0, "Could not add Null Renderer to filter graph", "ok", 0 );
// Connect up the filter graph's capture stream
hr = pBuilder->RenderStream(
&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,
pCap, pSampleGrabberFilter, pNullRenderer);
if( hr != S_OK )
MessageBox( 0, "Could not render capture video stream", "ok", 0 );
hr = pBuilder->RenderStream(
&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
pCap, NULL, NULL);
if (hr != S_OK && hr != VFW_S_NOPREVIEWPIN)
MessageBox( 0, "Could not render preview video stream", "ok", 0 );
// Get media control interfaces to graph builder object
hr = pGraph->QueryInterface(IID_IMediaControl,
(void**)&pMediaControl);
if( hr != S_OK )
MessageBox( 0, "Could not get media control interface", "ok", 0 );
// Run graph
while(1)
{
hr = pMediaControl->Run();
// Hopefully, the return value was S_OK or S_FALSE
if (hr == S_OK) break; // graph is now running
if (hr == S_FALSE) continue; // graph still preparing to run
// If the Run function returned something else,
// there must be a problem
// fprintf(stderr, "Error: %u\n", hr);
MessageBox( 0, "Could not run filter graph", "ok", 0 );
}
}
#pragma ENDDUMP
#include "FiveWin.ch"
#define GWL_STYLE -16
function Main()
local oWnd, hWnd
DEFINE WINDOW oWnd
ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT ( DShowCamera(),;
SetParent( hWnd := FindWindow( 0, "ActiveMovie Window" ), oWnd:hWnd ),;
SetWindowLong( hWnd, GWL_STYLE, nOr( WS_CHILD, WS_VISIBLE ) ),;
SetWindowPos( hWnd, 0, 10, 10, 300, 300 ) )
return nil
#pragma BEGINDUMP
#include <dshow.h>
#include <uuids.h>
#include <objbase.h>
#import "qedit.dll" raw_interfaces_only named_guids
EXTERN_C const CLSID CLSID_NullRenderer;
EXTERN_C const CLSID CLSID_SampleGrabber;
HB_FUNC( DSHOWCAMERA )
{
HRESULT hr;
ICreateDevEnum *pDevEnum = NULL;
IEnumMoniker *pEnum = NULL;
IMoniker *pMoniker = NULL;
IPropertyBag *pPropBag = NULL;
IGraphBuilder *pGraph = NULL;
ICaptureGraphBuilder2 *pBuilder = NULL;
IBaseFilter *pCap = NULL;
IBaseFilter *pSampleGrabberFilter = NULL;
IBaseFilter *pNullRenderer = NULL;
IMediaControl *pMediaControl = NULL;
char *pBuffer = NULL;
VARIANT var;
int n = 0;
int device_number = 0;
char device_name[ 100 ];
char char_buffer[100];
DexterLib::ISampleGrabber *pSampleGrabber = NULL;
strcpy( device_name, "" );
hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
if( hr != S_OK )
MessageBox( 0, "CoInitializeEx error", "ok", 0 );
hr = CoCreateInstance( CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_IGraphBuilder,
( void ** ) &pGraph );
if( hr != S_OK )
MessageBox( 0, "CoCreateInstance error", "ok", 0 );
hr = CoCreateInstance( CLSID_CaptureGraphBuilder2, NULL,
CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2,
( void ** ) &pBuilder );
if( hr != S_OK )
MessageBox( 0, "CoCreateInstance 2 error", "ok", 0 );
hr = ( ( ICaptureGraphBuilder * ) pBuilder )->SetFiltergraph( pGraph );
if( hr != S_OK )
MessageBox( 0, "Could not attach capture graph builder to graph", "ok", 0 );
hr = CoCreateInstance( CLSID_SystemDeviceEnum, NULL,
CLSCTX_INPROC_SERVER, IID_PPV_ARGS( &pDevEnum ) );
if( hr != S_OK )
MessageBox( 0, "Could not crerate system device enumerator", "ok", 0 );
hr = pDevEnum->CreateClassEnumerator(
CLSID_VideoInputDeviceCategory, &pEnum, 0 );
if( hr != S_OK )
MessageBox( 0, "No video devices found", "ok", 0 );
while(1)
{
// Access next device
hr = pEnum->Next(1, &pMoniker, NULL);
if( hr == S_OK )
n++; // increment device count
else
break;
// If device was specified by name rather than number...
if( device_number == 0 )
{
// Get video input device name
hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
if (hr == S_OK)
{
// Get current device name
VariantInit(&var);
hr = pPropBag->Read(L"FriendlyName", &var, 0);
// Convert to a normal C string, i.e. char*
sprintf(char_buffer, "%ls", var.bstrVal);
VariantClear(&var);
pPropBag->Release();
pPropBag = NULL;
// Exit loop if current device name matched devname
// MessageBox( 0, char_buffer, "device_name", 0 );
if (strcmp(device_name, char_buffer) == 0) break;
}
else
{
MessageBox( 0, "Error getting device names", "ok", 0 );
break;
}
}
else if (n >= device_number) break;
}
// Get video input device name
hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
VariantInit(&var);
hr = pPropBag->Read(L"FriendlyName", &var, 0);
// MessageBoxW( 0, L"Capture device", var.bstrVal, 0 );
VariantClear(&var);
// Create capture filter and add to graph
hr = pMoniker->BindToObject(0, 0,
IID_IBaseFilter, (void**)&pCap);
if( hr != S_OK )
MessageBox( 0, "Could not create capture filter", "ok", 0 );
// Add capture filter to graph
hr = pGraph->AddFilter(pCap, L"Capture Filter");
if( hr != S_OK )
MessageBox( 0, "Could not add capture filter to graph", "ok", 0 );
// Create sample grabber filter
hr = CoCreateInstance(CLSID_SampleGrabber, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter,
(void**)&pSampleGrabberFilter);
if( hr != S_OK )
MessageBox( 0, "Could not create Sample Grabber filter", "ok", 0 );
// Query the ISampleGrabber interface of the sample grabber filter
hr = pSampleGrabberFilter->QueryInterface(
DexterLib::IID_ISampleGrabber, (void**)&pSampleGrabber);
if( hr != S_OK )
MessageBox( 0, "Could not get ISampleGrabber interface to sample grabber filter", "ok", 0 );
// Enable sample buffering in the sample grabber filter
hr = pSampleGrabber->SetBufferSamples(TRUE);
if( hr != S_OK )
MessageBox( 0, "Could not enable sample buffering in the sample grabber", "ok", 0 );
// Set media type in sample grabber filter
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24;
hr = pSampleGrabber->SetMediaType((DexterLib::_AMMediaType *)&mt);
if( hr != S_OK )
MessageBox( 0, "Could not set media type in sample grabber", "ok", 0 );
// Add sample grabber filter to filter graph
hr = pGraph->AddFilter(pSampleGrabberFilter, L"SampleGrab");
if( hr != S_OK )
MessageBox( 0, "Could not add Sample Grabber to filter graph", "ok", 0 );
// Create Null Renderer filter
hr = CoCreateInstance(CLSID_NullRenderer, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter,
(void**)&pNullRenderer);
if( hr != S_OK )
MessageBox( 0, "Could not create Null Renderer filter", "ok", 0 );
// Add Null Renderer filter to filter graph
hr = pGraph->AddFilter(pNullRenderer, L"NullRender");
if( hr != S_OK )
MessageBox( 0, "Could not add Null Renderer to filter graph", "ok", 0 );
// Connect up the filter graph's capture stream
hr = pBuilder->RenderStream(
&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,
pCap, pSampleGrabberFilter, pNullRenderer);
if( hr != S_OK )
MessageBox( 0, "Could not render capture video stream", "ok", 0 );
hr = pBuilder->RenderStream(
&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
pCap, NULL, NULL);
if (hr != S_OK && hr != VFW_S_NOPREVIEWPIN)
MessageBox( 0, "Could not render preview video stream", "ok", 0 );
// Get media control interfaces to graph builder object
hr = pGraph->QueryInterface(IID_IMediaControl,
(void**)&pMediaControl);
if( hr != S_OK )
MessageBox( 0, "Could not get media control interface", "ok", 0 );
// Run graph
while(1)
{
hr = pMediaControl->Run();
// Hopefully, the return value was S_OK or S_FALSE
if (hr == S_OK) break; // graph is now running
if (hr == S_FALSE) continue; // graph still preparing to run
// If the Run function returned something else,
// there must be a problem
// fprintf(stderr, "Error: %u\n", hr);
MessageBox( 0, "Could not run filter graph", "ok", 0 );
}
}
#pragma ENDDUMP
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: wmormar and 34 guests