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

多显示器编程

开发平台:

Visual C++

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