HWND aus Dialog bestimmen



  • HWND hwndparent = GetParent(hwnddialog)
    

    Sowas vielleicht?

    MfG SideWinder



  • hmmm also erst dachte ich genial.....

    eigendlich sollte es auch funktionieren, aber leider tut es das nicht.... Wenn ich als HWND in der DlgProc das HWND , also den ersten Parameter angebe, müsste der mir doch das Fenster zurückgeben, das den Dialog erzeugt hat oder?

    Gruß Para



  • Aber du gibst beim Erstellen des Dialogs schon ein Parent-Window an?!
    Und was bekommst du denn von GetParent zurückgeliefert (ggf. noch, was von GetLastError)?



  • Du musst als Window-Style des Dialogs WS_CHILD angeben und als Parameter hParent bei CreateWindow() bzw. CreateWindowEx() das Parent-Fenster.

    Wenn du das nicht tust hat deine Dialogbox gar keinen Vater 🙂

    MfG SideWinder



  • ach vergesst es es hat sich schon erledigt....

    Das Problem lag gar nicht an dem HWND in dem Fall. Aber danke für den Tipp mit der Funktion, die hat das ganze erst möglich gemacht.

    Gruß Para



  • Obwohl wenn ihr mir noch eine Frage beantworten könnet:

    Um etwas in ne Combobox einzufügen muss ich doch nur CB_ADDSTRING senden oder?!

    oder was ist daran falsch:

    BOOL CALLBACK MACD3D::DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	HWND hFull          = GetDlgItem (hDlg, IDC_FULLSCR);
    	HWND hWnd           = GetDlgItem (hDlg, IDC_WINDOWED);
    	HWND hAdapter       = GetDlgItem (hDlg, IDC_ADAPTER);
    	HWND hDevice        = GetDlgItem (hDlg, IDC_DEVICE);
    	HWND hMode          = GetDlgItem (hDlg, IDC_GMODES);
    	HWND hAdapterFormat = GetDlgItem (hDlg, IDC_ADAP_FORMAT);
    	HWND hbbufferFormat = GetDlgItem (hDlg, IDC_BBUFFER_FORMAT);
    
    	switch (message)
    	{
    		int bla;
    		case WM_INITDIALOG:
    			bla = SendMessage(hAdapter,CB_ADDSTRING, (WPARAM)0, (LPARAM)"no graphic card arivable");  
    			SendMessage (hAdapter, CB_SETITEMDATA, 1, (LPARAM)"hallo"); 
    			m_ptrEnum->SetRenderWindow (GetParent (hDlg));
    			MessageBox (NULL, "test", "test", MB_OK);
    			m_ptrEnum->Init ();
    			return true;
    		case WM_COMMAND:
    			switch (LOWORD (wParam))
    			{
    				case IDOK:
    					EndDialog (hDlg, 1);
    					break;
    				case IDC_ADAPTER:
    					m_ptrEnum->GetAdapters ();
    					break;
    				case IDC_DEVICE:
    					break;
    				case IDC_FULLSCR:
    					break;
    				case IDC_WINDOWED:
    					break;
    				case IDC_ADAP_FORMAT:
    					break;
    			}
    		default:
    			break;
    	}
    	return false;
    }
    


  • Steht denn irgendwas in der Combo-Box und ist das Handle auch richtig? Und checke mal die Rückgabewerte der SendMessage-Aufrufe!
    Für den Aufruf mit CB_SETITEMDATA könnte ich mir vorstellen, dass das nicht funktioniert, wenn es diesen Eintrag (mit dern Nummer 1) noch nicht gibt 🙄



  • naja es steht nix drin.... das ist ja das problem.......

    Die Rückgabetype prüfe ich ja auch.... CB_ADDSTRING gibt 0 zurück....

    Die zweite weiss ich nicht ist die überhaupt nötig / wofür is die überhaupt?!?!?



  • hmmmm okay,

    *hilfe* meine HWND's sind alle Nullpointer.....

    warum das denn?! Welche Gründe kann es geben das GetDlgItem fehlschlägt?! Ich hasse WinApi...



  • Nun, alle HWNDs sind nicht static, werden einmal belegt und sofort wieder zerbröselt...

    Mach sie static und hol sie Dir mit GelDlgItem im WM_INITDIALOG...



  • Na okay so bekommen die HWND's sinnvolle Werte....

    allerdings klappts mit dem Eintrag in die Combobox immer noch net!



  • Parapiler schrieb:

    Die Rückgabetype prüfe ich ja auch.... CB_ADDSTRING gibt 0 zurück....

    Demnach müsste dann ja eigentlich alles gut gegangen sein:

    The return value is the zero-based index to the string in the list box of the combo box. If an error occurs, the return value is CB_ERR. If insufficient space is available to store the new string, it is CB_ERRSPACE.



  • hmmm aber ich sehe nix....



  • Hast du evtl. die Combo-Box zu klein erstellt? Wenn man im Ressourcen-Editor den Pfeil der Combo-Box anklickt kann man da noch die aufpopp-Größe einstellen - vielleicht hat es ja damit was zu tun 😕



  • hmmm also ich bezweifle es zwar aber es ist ja nen Versuch wert. Wo stelle ich das denn bei VS7 genau ein?! Ich finde das gerade net so ganz.

    Gruß Para



  • Bei VS6 Combobox anklicken, via Doppelklick auf den Dropdown-Pfeil der Combobox zeigt er entweder Normalgröße oder die aufgeklappte Größe an.



  • ja das weiss ich auch aber in VS7?!

    Naja aber 1 Eintrag müsste er ja auf jedenfall angeben können...



  • Du klickst einfach auf den kleinen Pfeil nach unten der ComboBox im Dialogeditor. Dann kannste die Größe nach unten ziehen...



  • hmmmm irgendwie geht das so net.....



  • @flenders
    für dieses leidge combobox grössen thema könntest du doch mal nen screenshot bzw ne howto wie man die grösse korrekt einstellt in die FAQ stellen.


Anmelden zum Antworten