From b123c857a242e591ec02fbf73cadb7bc2b5b2fdf Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 13:10:27 +0000 Subject: Utilisateur : Fcolin Date : 18/12/98 Heure : 18:48 Créé (vss 1) --- IvyProbe/IvyProbeDlg.cpp | 315 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 IvyProbe/IvyProbeDlg.cpp (limited to 'IvyProbe') diff --git a/IvyProbe/IvyProbeDlg.cpp b/IvyProbe/IvyProbeDlg.cpp new file mode 100644 index 0000000..cea28e4 --- /dev/null +++ b/IvyProbe/IvyProbeDlg.cpp @@ -0,0 +1,315 @@ +// TestDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "Test.h" +#include "TestDlg.h" + +#include "BusApplication.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +///////////////////////////////////////////////////////////////////////////// +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + //{{AFX_DATA(CAboutDlg) + enum { IDD = IDD_ABOUTBOX }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAboutDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + //{{AFX_MSG(CAboutDlg) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ + //{{AFX_DATA_INIT(CAboutDlg) + //}}AFX_DATA_INIT +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAboutDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) + //{{AFX_MSG_MAP(CAboutDlg) + // No message handlers + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTestDlg dialog + +CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/) + : CDialog(CTestDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CTestDlg) + m_busnumber = 0; + //}}AFX_DATA_INIT + // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); + + +} + +void CTestDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CTestDlg) + DDX_Control(pDX, IDC_TEXT, m_text); + DDX_Control(pDX, IDC_SLIDER7, m_slider7); + DDX_Control(pDX, IDC_SLIDER6, m_slider6); + DDX_Control(pDX, IDC_SLIDER5, m_slider5); + DDX_Control(pDX, IDC_SLIDER4, m_slider4); + DDX_Control(pDX, IDC_SLIDER3, m_slider3); + DDX_Control(pDX, IDC_SLIDER2, m_slider2); + DDX_Control(pDX, IDC_SLIDER1, m_slider1); + DDX_Control(pDX, IDC_SLIDER0, m_slider0); + DDX_Text(pDX, IDC_BUSNUMBER, m_busnumber); + DDV_MinMaxUInt(pDX, m_busnumber, 1024, 65535); + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CTestDlg, CDialog) + //{{AFX_MSG_MAP(CTestDlg) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_START, OnStart) + ON_WM_VSCROLL() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTestDlg message handlers + +BOOL CTestDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + // Add "About..." menu item to system menu. + + // IDM_ABOUTBOX must be in the system command range. + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != NULL) + { + CString strAboutMenu; + strAboutMenu.LoadString(IDS_ABOUTBOX); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + // TODO: Add extra initialization here + m_busnumber = 2010; + UpdateData(FALSE); + + m_slider0.SetRange( 0, 127); + m_slider1.SetRange( 0, 127); + m_slider2.SetRange( 0, 127); + m_slider3.SetRange( 0, 127); + m_slider4.SetRange( 0, 127); + m_slider5.SetRange( 0, 127); + m_slider6.SetRange( 0, 127); + m_slider7.SetRange( 0, 127); + + m_slider0.SetWindowText( "MIDICS10:fader0 value=" ); + m_slider1.SetWindowText( "MIDICS10:fader1 value=" ); + m_slider2.SetWindowText( "MIDICS10:fader2 value=" ); + m_slider3.SetWindowText( "MIDICS10:fader3 value=" ); + m_slider4.SetWindowText( "MIDICS10:fader4 value=" ); + m_slider5.SetWindowText( "MIDICS10:fader5 value=" ); + m_slider6.SetWindowText( "MIDICS10:fader6 value=" ); + m_slider7.SetWindowText( "MIDICS10:fader7 value=" ); + + return TRUE; // return TRUE unless you set the focus to a control +} + +void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialog::OnSysCommand(nID, lParam); + } +} + +// If you add a minimize button to your dialog, you will need the code below +// to draw the icon. For MFC applications using the document/view model, +// this is automatically done for you by the framework. + +void CTestDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // device context for painting + + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialog::OnPaint(); + } +} + +// The system calls this to obtain the cursor to display while the user drags +// the minimized window. +HCURSOR CTestDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + +void CTestDlg::OnStart() +{ + UpdateData(TRUE); + bus = new Bus( "TEST NT", m_busnumber,"TEST NT READY",new BusApplicationCallbackOf(this, ApplicationCallback)); + BusMessageCallbackOf *fader; + fader = new BusMessageCallbackOf(this, FaderCallback ); + + bus->BindMsg("^MIDICS10:fader([0-7]) value=([0-9]+)",fader); + bus->BindMsg("^MIDICS10:knob([0-5]) value=([0-9]+)",fader); + //bus->BindMsg("^S( A=([0-9]+))?( B=([0-9]+))?",cb); + bus->start(); +} + +void CTestDlg::BusCallback(BusApplication *app, int argc, const char **argv) +{ + int i; + CString text; + TRACE(" Called function args:"); + m_text.SetSel( -1, -1, TRUE ); + text.Format("Bus callback %d args\r\n",argc ); + m_text.ReplaceSel( text ); + for ( i = 0; i < argc; i++ ) + { + m_text.SetSel( -1, -1, TRUE ); + text.Format("Bus callback arg%d '%s'\r\n",i, argv[i] ); + m_text.ReplaceSel( text ); + TRACE(" '%s'",argv[i]); + } + TRACE("\n"); + +} + +void CTestDlg::OnOK() +{ + // TODO: Add extra validation here + delete bus; + CDialog::OnOK(); +} + +void CTestDlg::FaderCallback(BusApplication *app, int argc, const char **argv) +{ +int fader; +int value; +if ( argc != 2 ) + { + TRACE("bad Fader call back\n"); + return; + } + fader = atoi( argv[0] ); + value = atoi( argv[1] ); + switch ( fader ) { + case 0: + m_slider0.SetPos( value ); + break; + case 1: + m_slider1.SetPos( value ); + break; + case 2: + m_slider2.SetPos( value ); + break; + case 3: + m_slider3.SetPos( value ); + break; + case 4: + m_slider4.SetPos( value ); + break; + case 5: + m_slider5.SetPos( value ); + break; + case 6: + m_slider6.SetPos( value ); + break; + case 7: + m_slider7.SetPos( value ); + break; +} +UpdateData(FALSE); + +} + +void CTestDlg::DirectCallback(BusApplication *app, int id, const char *arg) +{ +TRACE("Direct Msg Receive %d, %s\n",id,arg ); +} + +void CTestDlg::ApplicationCallback(BusApplication *app, int event) +{ + CString text; + m_text.SetSel( -1, -1, TRUE ); + text.Format("Application: %s %s\r\n",(LPCSTR)(app->GetName()), event ? "bye" : "ready" ); + m_text.ReplaceSel( text ); +} + + +void CTestDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) +{ + // TODO: Add your message handler code here and/or call default + CSliderCtrl *slider = (CSliderCtrl *)pScrollBar; + CString text; + CString value; + slider->GetWindowText( text ); + value.Format("%d",slider->GetPos()); + text += value; + TRACE("%s\n",(LPCSTR)text ); + bus->SendMsg( text ); + CDialog::OnVScroll(nSBCode, nPos, pScrollBar); +} -- cgit v1.1