SAMPLE1.C
上传用户:guoxiu1214
上传日期:2019-02-27
资源大小:876k
文件大小:5k
源码类别:

多显示器编程

开发平台:

Visual C++

  1. /*******************************************************************************
  2. Copyright Datapath Ltd. 2008.
  3. File:    SAMPLE1.C
  4. Purpose: VisionRGB-PRO and VisionRGB-X example program that shows how to display
  5.          an RGB window.
  6. History:
  7.          16 JAN 08    SB   Created.
  8. *******************************************************************************/
  9. #include <windows.h>
  10. #include <rgb.h>
  11. #include <rgbapi.h>
  12. #include <rgberror.h>
  13. #include "resource.h"
  14. /* Static Constants ***********************************************************/
  15. static const TCHAR
  16.    RGBWindowClass[]  = { TEXT("RGBSampleWndClass") },
  17.    Property[]        = { TEXT("RGB") },
  18.    Caption[]         = { TEXT("RGB Sample 1") };
  19. /* Global Variables ***********************************************************/
  20. static HWND          gHWnd = NULL;
  21. static HINSTANCE     gHInstance = NULL;
  22. /******************************************************************************/
  23. LRESULT CALLBACK
  24. RGBWndProc (
  25.    HWND     hWnd,
  26.    UINT     message,
  27.    WPARAM   wParam,
  28.    LPARAM   lParam )
  29. {
  30.    switch ( message )
  31.    {
  32.       case WM_COMMAND:
  33.       {
  34.          switch ( LOWORD ( wParam ) )
  35.          {
  36.             case IDM_EXIT:
  37.             {
  38.                DestroyWindow ( hWnd );
  39.                break;
  40.             }
  41.          }
  42.          break;
  43.       }
  44.       case WM_CREATE:
  45.       {
  46.          LPCREATESTRUCT pCreateStruct = (LPCREATESTRUCT) lParam;
  47.          SetProp ( hWnd, Property, pCreateStruct->lpCreateParams );
  48.          break;
  49.       }
  50.       case WM_CLOSE:
  51.       {
  52.          DestroyWindow ( hWnd );
  53.          break;
  54.       }
  55.       case WM_DESTROY:
  56.       {
  57.          HRGB hRGB = (HRGB)RemoveProp ( hWnd, Property );
  58.          if ( hRGB )
  59.          {
  60.             RGBSetWindow ( hRGB, NULL );
  61.             RGBCloseInput ( hRGB );
  62.          }
  63.          PostQuitMessage ( 1 );
  64.          break;
  65.       }
  66.       default:
  67.       {
  68.          return DefWindowProc ( hWnd, message, wParam, lParam );
  69.       }
  70.    }
  71.    return 0;
  72. }
  73. /******************************************************************************/
  74. unsigned long
  75. RegisterRGBWindowClass (
  76.    HINSTANCE   hInstance )
  77. {
  78.    WNDCLASS wc;
  79.    wc.style = 0;
  80.    wc.lpfnWndProc = (WNDPROC)RGBWndProc;
  81.    wc.cbClsExtra = 0;
  82.    wc.cbWndExtra = 0;
  83.    wc.hInstance = hInstance;
  84.    wc.hIcon = LoadIcon ( hInstance, MAKEINTRESOURCE ( IDI_ICON ));
  85.    wc.hCursor = LoadCursor ( NULL, IDC_ARROW );
  86.    wc.hbrBackground = NULL;
  87.    wc.lpszMenuName =  MAKEINTRESOURCE ( IDR_MENU );
  88.    wc.lpszClassName = RGBWindowClass;
  89.    if ( RegisterClass ( &wc ) == 0 )
  90.    {
  91.       return GetLastError ();
  92.    }
  93.    else
  94.    {
  95.       return 0;
  96.    }
  97. }
  98. /******************************************************************************/
  99. unsigned long
  100. CreateRGBWindow (
  101.    unsigned long  input )
  102. {
  103.    unsigned long  error;
  104.    HRGB           hRGB;
  105.    error = RGBOpenInput ( input, &hRGB );
  106.    if ( error == 0 )
  107.    {
  108.       /* Create the window. */
  109.       gHWnd = CreateWindow ( RGBWindowClass, Caption,
  110.             WS_OVERLAPPEDWINDOW,
  111.             CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
  112.             (HWND)NULL, NULL, gHInstance, (LPVOID)hRGB );
  113.       if ( gHWnd )
  114.       {
  115.          RGBSetWindow ( hRGB, gHWnd );
  116.          ShowWindow ( gHWnd, SW_SHOWNORMAL );
  117.          /* Maximise the capture rate. */
  118.          RGBSetFrameDropping ( hRGB, 0 );
  119.          return 0;
  120.       }
  121.       else
  122.       {
  123.          error = GetLastError ( );
  124.       }
  125.       RGBCloseInput ( hRGB );
  126.    }
  127.    return error;
  128. }
  129. /******************************************************************************/
  130. int APIENTRY
  131. wWinMain (
  132.    HINSTANCE   hInstance,
  133.    HINSTANCE   hPrevInstance,
  134.    LPSTR       lpCmdLine,
  135.    int         nShowCmd )
  136. {
  137.    unsigned long  error;
  138.    MSG            msg;
  139.    HRGBDLL        hRGBDLL = 0;
  140.    gHInstance = hInstance;
  141.    /* Register the RGBWindowClass. */
  142.    error = RegisterRGBWindowClass ( gHInstance );
  143.    if ( error )
  144.    {
  145.       TCHAR buffer[256];
  146.       wsprintf ( buffer, TEXT("Error Registering the window class: 0x%08x"), error );
  147.       MessageBox ( NULL, buffer, Caption, MB_OK | MB_ICONERROR );
  148.       return error;
  149.    }
  150.    error = RGBLoad ( &hRGBDLL );
  151.    if ( error )
  152.    {
  153.       TCHAR buffer[256];
  154.       wsprintf ( buffer, TEXT("Error returned from RGBLoad: 0x%08x"), error );
  155.       MessageBox ( NULL, buffer, Caption, MB_OK | MB_ICONERROR );
  156.       return error;
  157.    }
  158.    /* Create the application window on input 0. */
  159.    error = CreateRGBWindow ( 0 );
  160.    if ( error )
  161.    {
  162.       TCHAR buffer[256];
  163.       wsprintf ( buffer, TEXT("Error creating the application window: 0x%08x"),
  164.             error );
  165.       MessageBox ( NULL, buffer, Caption, MB_OK | MB_ICONERROR );
  166.       return error;
  167.    }
  168.    /* Sit in the message loop until we are stopped. */
  169.    while ( GetMessage ( &msg, NULL, 0,0 ))
  170.    {
  171.       TranslateMessage ( &msg );
  172.       DispatchMessage ( &msg );
  173.    }
  174.    if ( hRGBDLL )
  175.    {
  176.       error = RGBFree ( hRGBDLL );
  177.    }
  178.    return error;
  179.    UNREFERENCED_PARAMETER ( nShowCmd );
  180.    UNREFERENCED_PARAMETER ( lpCmdLine );
  181.    UNREFERENCED_PARAMETER ( hPrevInstance );
  182. }
  183. /******************************************************************************/