MIDIDevsDlg.cpp
上传用户:fs3633
上传日期:2021-05-14
资源大小:909k
文件大小:3k
源码类别:

midi

开发平台:

Visual C++

  1. // MIDIDevsDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "MIDIDevDemo v2.h"
  5. #include "MIDIDevsDlg.h"
  6. #include "MIDIOutDevice.h"
  7. #include "MIDIInDevice.h"
  8. #include ".mididevsdlg.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CMIDIDevsDlg dialog
  16. CMIDIDevsDlg::CMIDIDevsDlg(CWnd* pParent /*=NULL*/)
  17. : CDialog(CMIDIDevsDlg::IDD, pParent),
  18.     m_OutDevId(0),
  19.     m_InDevId(0),
  20.     m_OutChanged(false),
  21.     m_InChanged(false)
  22. {
  23. //{{AFX_DATA_INIT(CMIDIDevsDlg)
  24. // NOTE: the ClassWizard will add member initialization here
  25. //}}AFX_DATA_INIT
  26. }
  27. void CMIDIDevsDlg::DoDataExchange(CDataExchange* pDX)
  28. {
  29. CDialog::DoDataExchange(pDX);
  30. //{{AFX_DATA_MAP(CMIDIDevsDlg)
  31. DDX_Control(pDX, IDC_MIDI_OUT_DEVS, m_OutDevsCombo);
  32. DDX_Control(pDX, IDC_MIDI_IN_DEVS, m_InDevsCombo);
  33. //}}AFX_DATA_MAP
  34. }
  35. BEGIN_MESSAGE_MAP(CMIDIDevsDlg, CDialog)
  36. //{{AFX_MSG_MAP(CMIDIDevsDlg)
  37. //}}AFX_MSG_MAP
  38.     ON_CBN_SELCHANGE(IDC_MIDI_OUT_DEVS, OnCbnSelchangeMidiOutDevs)
  39. END_MESSAGE_MAP()
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CMIDIDevsDlg message handlers
  42. BOOL CMIDIDevsDlg::OnInitDialog() 
  43. {
  44. CDialog::OnInitDialog();
  45.     //
  46.     // Initialize output device combo box with the names of all of the 
  47.     // MIDI output devices available
  48.     //
  49.     UINT i;
  50. MIDIOUTCAPS OutCaps;
  51.     for(i = 0; i < midi::CMIDIOutDevice::GetNumDevs(); i++)
  52.     {
  53.         midi::CMIDIOutDevice::GetDevCaps(i, OutCaps);
  54.         m_OutDevsCombo.AddString(OutCaps.szPname);
  55.     }
  56.     if(midi::CMIDIOutDevice::GetNumDevs() > 0)
  57.     {
  58.         m_OutDevsCombo.SetCurSel(m_OutDevId);
  59.     }
  60.     //
  61.     // Initialize input device combo box with the names of all of the
  62.     // MIDI input devices available on this system
  63.     //
  64.     MIDIINCAPS InCaps;
  65.     for(i = 0; i < midi::CMIDIInDevice::GetNumDevs(); i++)
  66.     {
  67.         midi::CMIDIInDevice::GetDevCaps(i, InCaps);
  68.         m_InDevsCombo.AddString(InCaps.szPname);
  69.     }
  70.     if(midi::CMIDIInDevice::GetNumDevs() > 0)
  71.     {
  72.         m_InDevsCombo.SetCurSel(m_InDevId);
  73.     }
  74. return TRUE;  
  75. }
  76. // Client clicked OK
  77. void CMIDIDevsDlg::OnOK() 
  78. {
  79.     //
  80.     // Check to see if the client changed the selection for either the
  81.     // MIDI input or output devices. If so, indicate that a new 
  82.     // selection has been made
  83.     //
  84.     if(m_OutDevsCombo.GetCount() > 0)
  85.     {
  86.         if(m_OutDevId != m_OutDevsCombo.GetCurSel())
  87.         {
  88.         m_OutDevId = m_OutDevsCombo.GetCurSel();
  89.             m_OutChanged = true;
  90.         }
  91.     }
  92.     if(m_InDevsCombo.GetCount() > 0)
  93.     {
  94.         if(m_InDevId != m_InDevsCombo.GetCurSel())
  95.         {
  96.             m_InDevId = m_InDevsCombo.GetCurSel();
  97.             m_InChanged = true;
  98.         }
  99.     }
  100. CDialog::OnOK();
  101. }
  102. void CMIDIDevsDlg::OnCbnSelchangeMidiOutDevs()
  103. {
  104.     // TODO: 在此添加控件通知处理程序代码
  105. }