CString -> LPARAM



  • toxor schrieb:

    Ich versende das an eine Callback Funktion, gibts den sonst irgendwie ne Möglichkeit das dorthin zu schicken ?

    Und hast du diese Callback-Funktion innerhalb deines Programms eingerichtet - oder ist das ein eigenständiges Programm? (ich glaube, wir reden aneinander vorbei)

    Ich hab keine Ahnung warum das überhaupt funktioniert da oben ( also das die Callback aufgerufen wird obwohl es keine Memberfunktion ist ) . Naja und da wollte ich halt die globale Variable CString Load übergeben ( als PARAM )

    Warum sollte es nicht funktionieren? Die WinAPI wurde noch auf Grundlage von C geschrieben - und damals hat man seine Windows-Programme nur auf diese Weise geschrieben (und ohne überhaupt etwas von Klassen (im C++ Sinn) oder Memberfunktionen gehört zu haben). Die MFC ist letzlich eine Wrapper-Bibliothek, die nahezu alle WinAPI-Aufrufe hinter einer Klassenhierarchie versteckt.



  • Ah ok ,sry , ich versende das innerhalb eines Programms ( also in keinem Eigenständigen Programm), sollte doch eigentlich schon gehen oder ?



  • wie holst du dir dann den string? du musst dann im messagehandler den string zurückcasten:

    CString text = reinterpret_cast<LPCTSTR> (lParam);
    


  • hmmm ich versteh nicht ganz 😕



  • na du sendest die message ja an ein hwnd... und dort muss doch irgendwo ein handler sein, der die message verarbeitet? dort, wo du mit dem string was machen willst...



  • Eigentlich will ich den String in die Callback schicken damit dort was mit dem String gemacht wird.

    Ich mach das hier nach diesem Bsp :
    http://blog.voidnish.com/?p=113

    aber ich möchte halt anstatt das ein im Code vorgeschriebenes Verzeichnis, ein CString übergeben wo das Verzeichnis drin steht.



  • ach, jetzt versteh ich... sorry... ne dann brauchst du das nicht zurückcasten. du selbst machst also mit dem string nixmehr, wenn ich das jetz richtig verstehe..



  • jop genau, ich möchte halt das Startverzeichnis nicht statisch vergeben , sondern zur Laufzeit ändern. Und da will die Callback funktion ein LPARAM, aber irgendwie lässt sich das so nicht realisieren fürchte ich 😞



  • Probiere mal folgendes:

    int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
    {
    	if(uMsg == BFFM_INITIALIZED)
    	{
    
    		SendMessage(hwnd, BFFM_SETSELECTION,TRUE,lpData);		
    	}
    	return 0;
    }
    
    void CFTP2Dlg::OnBnClickedButton6()
    {
    ...
    CString strInitialDir(_T("C:\\Windows"));
    
    bi.lpfn = BrowseCallbackProc;
    bi.lParam = (LPARAM) (LPCTSTR) strInitialDir;
    ...
    }
    


  • JAAAA MAN Thats it 😉 Danke


Anmelden zum Antworten