SelectDriverDialog.cpp
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:3k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // SelectDriverDialog.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "vfw.h"
  5. #include "SelectDriverDialog.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. #pragma comment( lib , "vfw32.lib" )
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSelectDriverDialog dialog
  14. CSelectDriverDialog::CSelectDriverDialog(CWnd* pParent /*=NULL*/)
  15. : CDialog(CSelectDriverDialog::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(CSelectDriverDialog)
  18. // NOTE: the ClassWizard will add member initialization here
  19. //}}AFX_DATA_INIT
  20. }
  21. void CSelectDriverDialog::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(CSelectDriverDialog)
  25. DDX_Control(pDX, IDC_LIST, m_list);
  26. //}}AFX_DATA_MAP
  27. }
  28. BEGIN_MESSAGE_MAP(CSelectDriverDialog, CDialog)
  29. //{{AFX_MSG_MAP(CSelectDriverDialog)
  30. //}}AFX_MSG_MAP
  31. END_MESSAGE_MAP()
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CSelectDriverDialog message handlers
  34. BOOL CSelectDriverDialog::OnInitDialog() 
  35. {
  36. CDialog::OnInitDialog();
  37. //获取视频驱动器
  38. HWND hWnd = ::capCreateCaptureWindow( "本地视频窗口" ,WS_OVERLAPPEDWINDOW , 0 , 0 , 1 , 1 , NULL , 0 );
  39.     //查找所有的驱动
  40. CString name, version;
  41. for( int i = 0; i < 10 ; i++ )
  42. if( capDriverConnect( hWnd , i ) )
  43. {
  44. capDriverGetName( hWnd , name.GetBufferSetLength( MAX_PATH ) , MAX_PATH );
  45. name.ReleaseBuffer( );
  46. capDriverGetVersion( hWnd , version.GetBufferSetLength( MAX_PATH ) , MAX_PATH );
  47. version.ReleaseBuffer( );
  48. capDriverDisconnect( hWnd );
  49.             //添加到链表
  50. int index = this->m_list.AddString( name+", " + version );
  51. this->m_list.SetItemData( index , i );
  52. }
  53. else if( this->driver_id == i )
  54. this->driver_id = -1;
  55.     //清除窗口
  56. ::DestroyWindow( hWnd );
  57. if( this->driver_id != -1 || ! this->m_list.GetCount( ) )
  58. {
  59. if( this->driver_id == -1 )
  60. MessageBox( "没有视频驱动设备" , "视频驱动" , MB_ICONINFORMATION | MB_OK );
  61. CSelectDriverDialog::OnCancel( );
  62. }
  63. else if( this->m_list.GetCount( ) == 1 )
  64. {
  65. this->m_list.SetCurSel( 0 );
  66. CSelectDriverDialog::OnOK( );
  67. }
  68. return TRUE; 
  69. }
  70. void CSelectDriverDialog::OnOK() 
  71. {
  72. int index = this->m_list.GetCurSel( );
  73. if( index == CB_ERR )
  74. {
  75. MessageBox( "请从列表中选择一个视频驱动器" , "视频驱动" , MB_ICONSTOP | MB_OK );
  76. return;
  77. }
  78. this->driver_id = this->m_list.GetItemData( index );
  79. CDialog::OnOK( );
  80. }
  81. int CSelectDriverDialog::SelectDriver( int driver_id )
  82. {
  83. CSelectDriverDialog dlg;
  84. dlg.driver_id = driver_id;
  85. dlg.DoModal( );
  86. return dlg.driver_id;
  87. }