Variablen übergeben



  • Hi,

    ich habe folgendes Prob:

    Ich möchte die Audio und Videogeräte meines Rechners anzeigen lassen.
    Die Prozedur funktioniert auch. Doch wie kann ich die Variablen übergeben.
    Und an welcher Posistion im Quelltext muß ich diese Funktion einfügen.
    Ich möchte das Sie sofort bei Programmstart ausgeführt wird. Die Geräte sollen in eine Listbox angezeigt werden. Ich habe Sie bisher in der

    CMainFrame::CMainFrame()
    {
    	// ZU ERLEDIGEN: Hier Code zur Member-Initialisierung einfügen
    	m_ListBox.Create(
    		            WS_CHILD | WS_VISIBLE | WS_BORDER,
    					CRect(50,50,250,50),this,1);
    
    	// Declare variables.
        HRESULT hr;
        IWMEncoder2* pEncoder;
        IWMEncSourcePluginInfoManager* pSrcPlugMgr;
        IWMEncDeviceControlPluginInfoManager* pDCPlugMgr;
        IWMEncPluginInfo* pPlugInfo;
        int i;
        int j;
        long lCount;
        long lResrcCount;
        CComBSTR sScheme;
        CComBSTR sName;
        VARIANT_BOOL bResources;
    
        // Initialize the COM library and retrieve a pointer
        // to an IWMEncoder interface.
        hr = CoInitialize(NULL);
        if ( SUCCEEDED( hr ) )
        {
            hr = CoCreateInstance(CLSID_WMEncoder,
                NULL,
                CLSCTX_INPROC_SERVER,
                IID_IWMEncoder2,
                (void**) &pEncoder);
        }
    
        // Retrieve source and device plug-in info manager objects from IWMEncoder.
        if ( SUCCEEDED( hr ) )
        {
            hr = pEncoder->get_SourcePluginInfoManager(&pSrcPlugMgr);
        }
        if ( SUCCEEDED( hr ) )
        {
            hr = pEncoder->get_DeviceControlPluginInfoManager(&pDCPlugMgr);
        }
    
        // Loop through all the audio and video devices on the system.
        if ( SUCCEEDED( hr ) )
        {
            hr = pSrcPlugMgr->get_Count(&lCount);
        }
        for (i = 0; i < lCount; i++)
        {
            // Set the IWMEncPluginInfo object to the current plug-in.
            if ( SUCCEEDED( hr ) )
            {
                hr = pSrcPlugMgr->Item(i, &pPlugInfo);
            }
    
            // Find the plug-ins that support resources.
            if ( SUCCEEDED( hr ) )
            {
                hr = pPlugInfo->get_SchemeType(&sScheme);
            }
            if (_wcsicmp(sScheme, CComBSTR("DEVICE"))==0)
            {
                // Find the devices.
                if ( SUCCEEDED( hr ) )
                {
                    hr = pPlugInfo->get_Resources(&bResources);
                }
                if (bResources==VARIANT_TRUE)
                {
                    // Loop through the resources in the current plug-in.
                    if ( SUCCEEDED( hr ) )
                    {
                        hr = pPlugInfo->get_Count(&lResrcCount);
                    }
                    for (j = 0; j < lResrcCount; j++)
                    {
                        // Display the name of the plug-in.
                        if ( SUCCEEDED( hr ) )
                        {
                            hr = pPlugInfo->Item(j, &sName);
                        }
                        wprintf(CComBSTR("%s\n"), sName);//HIER STEHT IN DER VARIABLEN sName DER NAME DESJEWEILIGEN GERÄTES
    		MessageBox("Test","Info",MB_OK);
                    }
                }
            }
        }
    
        // This section shows how to enumerate digital devices such as DV cameras and VTRs.
    
        // Loop through the connected digital devices on the system such as DV cameras and VTRs.
        if ( SUCCEEDED( hr ) )
        {
            hr = pDCPlugMgr->get_Count(&lCount);
        }
        for (i = 0; i < lCount; i++)
        {
            // Set the IWMEncPluginInfo object to the current plug-in.
            if ( SUCCEEDED( hr ) )
            {
                hr = pDCPlugMgr->Item(i, &pPlugInfo);
            }
    
            // Find the digital devices.
            if ( SUCCEEDED( hr ) )
            {
                hr = pPlugInfo->get_SchemeType(&sScheme);
            }
            if (_wcsicmp(sScheme, CComBSTR("DEVICECONTROL"))==0)
            {
                if ( SUCCEEDED( hr ) )
                {
                    hr = pPlugInfo->get_Count(&lResrcCount);
                }
                // Loop through the resources in the current plug-in.
                for (j = 0; j < lResrcCount; j++)
                {
                    // Display the name of the plug-in.
                    if ( SUCCEEDED( hr ) )
                    {
                        hr = pPlugInfo->Item(j, &sName);
                    }
                 }
            }
        }
    
    }
    

    Wie kann ich nun die ermittelten Werte in einer Listbox speichern, damit ich diese Auswählen kann?
    Und wo gehört die Funktion hin. Ich glaub die CMaineFrame() ist falsch.

    Gruß

    Trikor 😕



  • weiß nicht ob du hier richtig bist, aber
    erstmal würde ich zwischen einlesen und anzeigen unterscheiden.

    Zweitens: wie "gleich" sollen denn die Daten angezeigt werden.

    Eine GUI die erstmal alles mögliche macht bevor sie sich zeigt ist eigentlich nicht vom Anwender
    nachvollziebar.
    Okay ist nicht mein Ding.

    Ein günstiger Punkt zum einlesen wäre in MFC virtual BOOL CWinApp::InitInstance();
    Mußt die Daten dann wohl in einen Container packen. Map vector,list oder so
    Wenn das ListCtrl initalisiert wird kannste sie entweder direkt um kopieren
    oder mit LVS_ OWNERDATA die Daten vom Container auslesen und anzeigen. Hier zu gibt es
    noch ne ganze Reihe anderer alternativen.

    Ein anderer günstiger Punkt,wenn auch ungleich schwerer, wäre nach der Initalisierung des ListCtrl/Views mit LVS_ OWNERDATA und setitemcount(1) das erste Element einzulesen und dann alle weitern. Ist nur eine Überlegung.

    Das Einfügen wird geht mit: int MyList.InsertItem( const LVITEM* pItem );



  • Hast recht, InitInstance() bietet sich dafür an. Aber wie und wo definiere ich den Container??? Die Daten müssen ja von der App nach Dlg.
    Hab noch nie mit Containern gearbeitet. 🙄



  • Zum Beispiel ein vector aus der STL
    [url]
    http://www.c-plusplus.net/forum/viewtopic.php?t=39470&highlight=vector
    [/url]


Anmelden zum Antworten