ONVScroll event auslösen durch funktion



  • Hallo,
    Ich hab, um eines meiner Programm mit einem MIDI-Controler ferzusteuern,
    Einen kleinen Filter gebaut, der die rohen MIDI Daten an den Wert eines Sliders weitergeben soll. Ich kann leider nicht die datei VideoCaptureDlg.h inkludieren, weil sonst der Debugger einen Fehler meldet. Ich will nun das ganze mit Windows Messages machen, leider kann ich nicht herausfinden, wie ich per Message den Slider bewege. Weiß jemand rat?

    Hier is der Quellcode der Funktion bis jetzt:

    #include "stdafx.h"
    #include "MIDIFilter.h"
    #include "VideoCapture.h"
    
    void MIDIFilter(int Channel, int Data1, int Data2)
    {
    
            //Hier soll nun die Message an den Dialog gesendet werden,
            //die ON_VScroll auslöst und dorthin den wert von Data2 übergibt
    
    	TRACE (_T("%d->%d\n"), Data1, Data2);
            //Trace-Makro wird ausgegeben mit den richtigen Daten
    };
    

  • Mod

    Einen Slider bewegst Du mit WM_VSCROLL so gar nicht.
    Dazu solltest Du einfach SetScrollInfo benutzen.

    Ansonsten ein WM_VSCROLL Event auslösen ist was anderes...

    dlg->SendMessage(WM_VSCROLL,MAKEWPARAM(SB_THUMBPOSITION,value),NULL);
    


  • kleine Frage:
    welcche datei muss ich inkludieren damit dlg aufrufbar ist?


  • Mod

    jonnybx schrieb:

    kleine Frage:
    welcche datei muss ich inkludieren damit dlg aufrufbar ist?

    Include?
    Das ist das Objekt Deines Dialoges. Das hängt doch davon ab wo dessen Instanz liegt... Du musst doch selber wissen wo die Instanz Deines Dialoges lebt und erzeugt wird...



  • Ja, aber soweit ich das sehe wird die Instanz nicht in einer .h sondern in einer .cpp deklariert

    Auszug aus der Datei VideoCapture.cpp, automatisch generiert vom MFC:

    BOOL CVideoCaptureApp::InitInstance()
    {
    	// Standard initialization
    	// If you are not using these features and wish to reduce the size
    	//  of your final executable, you should remove from the following
    	//  the specific initialization routines you do not need.
    
    #if _MSC_VER < 1400
    	#ifdef _AFXDLL
    		Enable3dControls();			// Call this when using MFC in a shared DLL
    	#else
    		Enable3dControlsStatic();	// Call this when linking to MFC statically
    	#endif
    #endif
    
    	CVideoCaptureDlg dlg;
    	m_pMainWnd = &dlg;
    	int nResponse = dlg.DoModal();
    	if (nResponse == IDOK)
    	{
    		// TODO: Place code here to handle when the dialog is
    		//  dismissed with OK
    	}
    	else if (nResponse == IDCANCEL)
    	{
    		// TODO: Place code here to handle when the dialog is
    		//  dismissed with Cancel
    	}
    
    	// Since the dialog has been closed, return FALSE so that we exit the
    	//  application, rather than start the application's message pump.
    	return FALSE;
    }
    

    aber meines wissens kann ich eine .cpp datei nicht inkludieren.


  • Mod

    Dein Objekt steht doch in CWinApp::m_pMainWnd!

    Du kannst also einen entsprechenden cast druchführen

    static_cast<CVideoCaptureDlg*>(AfxGetMainWnd())
    

Anmelden zum Antworten