Werte während der Auswahl auslesen



  • Hallo ich bin Mr. Hanky,
    zur Zeit arbeite ich an einer Oberfläche an der Treiber und weitere Bereiche der Hardware angezeigt werden. Es befindet sich auf der Oberfläche auch eine ComboBox in der die Grafikkarten ausgewählt werden. Wenn der User über die verschiedenen Adapter geht sollen gleichzeitig in einer "Edit Control" der Treibername und weiter es über den Adapter angezeigt werden, so dass vor der entgültigen Auswahl (durch den Klick) schon informationen bekannt gegeben werden.
    Leider weiß ich nicht wie während des makieres eine funktion aufgefrufen werden kann.
    Bevor jemand sagt, benutz doch einfach die Suchfunktion - das habe ich schon getan und leider keinen Erfolg gehabt. 😞
    Ich freue mich über jede Antwort.

    In großer Hoffnung
    Mr. Hanky 🙂



  • Suchst du CBN_SELCHANGE - wurde aus deinem Text nicht so ganz schlau, was jetzt genau deine Frage war 🙄



  • ich der fensterschleife wo case IDD_OK usw. steht rufe ich für die dialogbox eine funktion auf. in der funktion müsste ich wissen welchen wert der user grade ausgewählt hat.
    ich hoffe ich konnte mich jetzt besser ausdrücken

    mfg mr. hanky





  • Vielen Dank Mr. Hanky für deine versuche. Hatte gestern leider keine Zeit mehr. In der Datei Fenster.cpp steht meine Nachrichtenschleife für das Fenster:

    Fenster.cpp

    BOOL CALLBACK Fensterhandling::D3D_Information (HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
    {
    	switch(uiMessage)
    	{
    		case WM_DESTROY:
    		case WM_CLOSE:
    			// Hier wird der Dialog geschlossen
    			EndDialog(hWnd,0);
    			return (true);
    		case WM_INITDIALOG:
    			// Hier das machen, was man sonst in WM_CREATE machen würde
    			return (true);
    
    		case WM_COMMAND:
    			// Hier werden die beiden Buttons, vom Standard-Dialog
    			// des MS Visual Studio Resourcengenerators abgefragt.
    			switch (LOWORD(wParam))
    			{
    				case IDCANCEL:
    					EndDialog(hWnd,0);
    					return (true);
    
    				case IDOK:
    					PostQuitMessage(0);
    					return (true);
    
    				case IDC_Adapter:
    					Check_Adapter(hWnd);
    
    				default:
    					break;
    			}
    	}
    	return (false);
    }
    

    Wenn die ComboBox ausgewählt worden ist, wird die Funktion case IDCANCEL:
    EndDialog(hWnd,0);
    In dieser Funktion werden die möglichen Adapter ermittelt und in die Liste eingetragen. Diese Funktion befindet siche aber in der Datei Check_D3D.cpp:

    // #####   GLOBALE VARIABLEN   ##########################################
    //Direct 3D9 Schnittstelle
    PDIRECT3D9				pAdapter = NULL;
    D3DADAPTER_IDENTIFIER9*	pAdapterList;
    
    // #####   FUNKTIONSRUMPF   #############################################
    BOOL Check_Adapter(HWND hWnd)
    {
    	//Variablendeklaration
    
    	char					acAdapterInfo[16348];
    	int						iAdapterCounter;
    
    	//Überprüfung der DirectX Version
    	pAdapter = Direct3DCreate9(D3D_SDK_VERSION);
    	if(pAdapter == NULL)
    	{
    		MessageBox(NULL,"Schnittstelle konnnte nicht erzeugt werden!","Fehler",MB_OK);
    		return (false);
    	}
    	//Liste der Adapter leeren
    	SendDlgItemMessage(hWnd, IDC_Adapter, CB_RESETCONTENT,0, 0);
    
    	//Abfrage wie viele Adapter vorhanden sind
    	iAdapterCounter = pAdapter->GetAdapterCount();
    
    	//Speicherallokation für die neuen Informationen
    	pAdapterList = new D3DADAPTER_IDENTIFIER9[iAdapterCounter];
    
    	//Informationen für jeden Adatper durchlaufen
    	for(int i = 0; i < iAdapterCounter;i++)
    	{
    		//Adapterlistarry mit Informationen füllen
    		if(pAdapter->GetAdapterIdentifier(i,0,&pAdapterList[i]) != 0)
    		{
    			MessageBox(NULL,"Adapter konnte nicht abgefragt werden!","Fehler",MB_OK);	
    			return (false);
    		}
    		else
    		{
    			//ComboBox mit Informationen füllen und Adatperdetails angeben!
    			SendDlgItemMessage(hWnd, IDC_Adapter, CB_ADDSTRING	,0, (LPARAM)pAdapterList[i].Description);	
    			sprintf(acAdapterInfo,"Adapter-ID: %d\r\nName: %s\r\nTreiber: %s\r\nTreiberversion: %d",i,pAdapterList[i].Description,pAdapterList[i].Driver,pAdapterList[i].DriverVersion);	
    		}
    	}
    	//Anzeige auf die erste Position in der Liste setzen
    	SendDlgItemMessage(hWnd, IDC_Adapter, CB_SETCURSEL, 0, 0);
    	return (true);
    }
    

    Jetzt suche ich eine Funktion, wenn ein Menüpunkt ausgewählt worden ist, der eine Funktion aufruft, in der ich einen Text in ein EditText schreibt. Denn Befehl für das schreiben kenne ich, aber leider weiß ich nicht wie ich überprüfen kann, wann der Klick zur Auswahl eines Menüpunktes geschehen ist. Ist es am sinnvollsten die funktion nach der switchanweisung zu starten oder gibt es eine möglichkeit dieses auch im dem case-punkt zu tun?

    Wenn ich mein Problem nicht gut erklärt habe, bitte einfach melden

    mfg
    Mr. Hanky 🙂



  • Wenn ich dich richtig verstehe, dann müsste CBN_SELCHANGE aber schon das sein, was du suchst 😕



  • Ja wunderbar, vielen Dank 🙂

    mfg Mr. Hanky


Anmelden zum Antworten