User manual - イメージャライブラリマニュアルver.1.06(2012年3月29日)

Table Of Contents
234
break;
default:
return DefWindowProc( hWnd, message, wParam, lParam);
}
return 0;
}
HPALETTE SetPalette( void);
void ShowImage( HWND hWnd, LPBYTE ImageBuffer, int dwWidth, int dwHeight );
DWORD WINAPI CaptureThread( HWND hWnd)
{
BOOL bCaptureLoop = TRUE;
DWORD dwObjectNum, dwCaptureSize, dwStreamSize;
int nResult;
LPBYTE pImageBuffer, pStreamBuffer;
pStreamBuffer = ( LPBYTE)VirtualAlloc( NULL, 128 * 96, MEM_COMMIT, PAGE_READWRITE);
pImageBuffer = ( LPBYTE)VirtualAlloc( NULL, 320 * 240, MEM_COMMIT, PAGE_READWRITE);
// カラーパレット作成
g_hPalette = SetPalette();
IMGStartStream( 64, 48, 640-64, 480-48, 4, IMAGE_256MONO);
while( bCaptureLoop)
{
dwObjectNum = WaitForMultipleObjects( 2, g_hCaptureEvent, FALSE, 2);
switch( dwObjectNum)
{
case WAIT_OBJECT_0: // Trigger key pushed
IMGStopStream();
nResult = IMGGetImage( pImageBuffer, &dwCaptureSize, 0, 0,
640, 480, 2, IMAGE_256MONO, 200);
if ( nResult == IMG_SUCCESS)
{
IMGMakeImageFile( TEXT(\\My Documents\\IMGSample.bmp),
pImageBuffer,dwCaptureSize,320,240,IMG_FORMAT_BMP);
}
IMGStartStream( 64, 48, 640-64, 480-48, 4, IMAGE_256MONO);
ResetEvent( g_hCaptureEvent[ 0]);
break;
case ( WAIT_OBJECT_0+1): // C key pushed
bCaptureLoop = FALSE;
break;
default:
nResult = IMGGetStreamData( pStreamBuffer, &dwStreamSize);
if ( nResult == IMG_SUCCESS)
{
ShowImage( hWnd, pStreamBuffer, 128, 96 );
}
break;
}
}
IMGStopStream();