Übergabe von Daten aus einer EditBox an ein View.



  • Hi Martin,;)

    danke für Deine Anwort, tut mit leid dass ich mich erst jetzt melde war aber leider früher nicht möglich !

    Ich habe es jetzt so gemacht wie Du gesagt hast (hoff ich) !
    Wenn dem nicht so sein sollte liegt es daran dass ich Dich nicht ganz verstanden habe.

    Die MxEdit habe ich rausgeworfen.
    PreTranslateMessage wird nun in der NEW_ToolBar verwendet.
    In New_ToolBar habe ich außerdem noch

    #include "MainFrm.h"
    

    eingepflegt !

    Der Code in der NEW_ToolBar.cpp sieht nun wie folgt aus:

    #include "stdafx.h"
    #include "NonButton Ctrl in ToolBar 1.h"
    
    #include "MainFrm.h"
    
    #include "NEW_cToolBar.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    //***********************************************************************************************************************
    #define  EDITLEN 80 
    #define  EDITPOS 3 
    //*********************************************************************************************************************** 
    
    NEW_cToolBar::NEW_cToolBar()
    {
    }
    
    NEW_cToolBar::~NEW_cToolBar()
    {
    }
    
    BEGIN_MESSAGE_MAP(NEW_cToolBar, CToolBar)
    	//{{AFX_MSG_MAP(NEW_cToolBar)
    		// HINWEIS - Der Klassen-Assistent fügt hier Zuordnungsmakros ein und entfernt diese.
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // Behandlungsroutinen für Nachrichten LBE_cToolBar 
    //*********************************************************************************************************************** 
    BOOL NEW_cToolBar::LoadToolBarEx (UINT id)
    {
    
    	bool bReturn;
    	bReturn = NEW_cToolBar::LoadToolBar (id);
    
    	int iPosition = CommandToIndex (ID_nEDIT);
    
    	SetButtonInfo (iPosition,ID_nEDIT,TBBS_SEPARATOR,EDITLEN);
    
    	CRect rect;
    	GetItemRect (iPosition, &rect);
    	rect.bottom = 20;
    
    	DWORD dwStyle = WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL;/*ES_NUMBER|*/
    	m_Ctrl_EDIT.CreateEx(WS_EX_CLIENTEDGE,_T("EDIT"),NULL, dwStyle, rect, this, ID_nEDIT);
    
    	return bReturn;
    }
    //*********************************************************************************************************************** 
    BOOL NEW_cToolBar::PreTranslateMessage(MSG* pMsg)
    {
        if (pMsg->message == WM_KEYDOWN && VK_RETURN == pMsg->wParam) 
        {
            return TRUE;
        }
        else if (pMsg->message == WM_KEYUP && VK_RETURN == pMsg->wParam) 
        {
    
    		// MessageBox("funktioniert","funktioniert",MB_OK);
    		// UpdateAllViews(NULL);
    		// CView* pView = 
    	   (((CMainFrame*)AfxGetMainWnd())->GetActiveView()->GetDocument()->UpdateAllViews(NULL));
            return TRUE;
        }
    
        return NEW_cToolBar::PreTranslateMessage(pMsg);
    }
    

    In der View.cpp habe ich nur :

    void CNonButtonCtrlinToolBar1View::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
    {
    	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
    	CString cstrAusgabe;
    	SetWindowText(cstrAusgabe);
    
    }
    

    hinzugefügt, da ich durch das ganze ausprobieren wahrsch. den Wald vor lauter Bäumen nicht mehr seh habe 😞 ich alles aus der Funktion geworfen was falsch war !!!

    Ich bekomme jetzt zwar keine Fehlermeldung mehr aber sobald ich das Projekt starte blitzt es nur kurz auf und verschwindet dann wieder ! 😞
    Ich habe das geänderte CodeSnippet angehängt falls mehr source gebraucht wird !
    Wäre klasse wenn Du das irgendwie korrigieren könntest. Ich bin total festgefahren . 😞

    Vielen Dank für Deine / Eure Hilfe und Mühe 🙂
    Gruß
    ShadowEater

    http://www.filehosting.at/files/download.php?file=2f9b38164cbd0bfc403d37107c26cea4

    Übrigens habe ich selbstverständlich Deinen Post gelesen, da aber nicht geklappt hat was ich versucht habe hat das Ausprobieren angefangen, war ein Fehler !



  • Hi,

    das aufblitzen hat sich erledigt, ich hatte den falschen ReturnWert aus meinem eigenen Control übernommen, jetzt sieht das ganze so aus:

    BOOL LBE_cToolBar::PreTranslateMessage(MSG* pMsg)
    {
    
        if (pMsg->message == WM_KEYDOWN && VK_RETURN == pMsg->wParam) 
        {
            return TRUE;
        }
        else if (pMsg->message == WM_KEYUP && VK_RETURN == pMsg->wParam) 
        {	
    
           (((CMainFrame*)AfxGetMainWnd())->GetActiveView()->GetDocument()->UpdateAllViews(NULL));
            return TRUE;
        }
    	return false;
    }
    

    Aber die Übergabe des Wertes auds der EditBox klappt immer noch nicht 😞

    Könnt Ihr mir weiterhelfen 😕
    Vielen Dank für eure Mühe und Hilfe
    Gruß
    ShadowEater


  • Mod

    Und warum übergibst Du nicht einfach den Zeiger auf den Text aus dem Toolbar Control heraus an UpdateAllViews?
    Einfach den LPARAM nutzen und casten!

    Dann hast Du eine direkte Interaktion zwischen Toolbar und View!



  • Hi Martin 🙂 ,

    danke für Deine schnelle Antwort, könntest Du mir mit ein paar Zeilen Code zeigen wie Du das meinst 😕 , irgendwie dreh ich mich im Kreis.
    Ich weis wie man Zeiger übergibt, eigentlich, aber irgendwie wills nicht klappen ! 😞
    Und die direkte Interaktion zwischen Toolbar und View ist mit Sicherheit der beste Weg !

    Vielen Dank für Deine Mühe und Hilfe
    nägelkauend
    ShadowEater 😉



  • Hi,

    kannst Du mir da nicht weiterhelfen ?

    Gruß
    ShadowEater


  • Mod

    Haben wir doch schon in einem anderen Thread gehabt... warst das nicht Du?

    Such doch mal nach UpdateAllViews hier im Forum in den letzten beiden Wochen...



  • Hi Martin,

    ne ich war das nicht der das gefragt hat in den letzten beiden Wochen, dieser Thread ist mein erster seit mehr als 4 Wochen.
    Ich hab geszcht aber nur einen Beitrag von Dir zu einer Frage von Guzz gefunden vom 11:50:33 05.05.2006, der hat aber mit meiner Frage nichts zu tun !

    Bei mir sieht das jetzt so aus:

    BOOL New_cToolBar::PreTranslateMessage(MSG* pMsg)
    {
    	if (pMsg->message == WM_KEYDOWN && VK_RETURN == pMsg->wParam) 
        {
            return TRUE;
        }
        else if (pMsg->message == WM_KEYUP && VK_RETURN == pMsg->wParam) 
        {	
    
    		CString chrBuf;
    		m_Ctrl_EDIT.GetWindowText(chrBuf);
    	// 	MessageBox(chrBuf, chrBuf ,MB_OK);
    
    		 ((CMainFrame*)AfxGetMainWnd())->GetActiveView()->GetDocument()->UpdateAllViews(NULL);
    
            return TRUE;
        }
    	return false;
    }
    
    void CTheReaderView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
    {
    	CTheReaderDoc	 *pDoc	= GetDocument ();
    	CRichEditCtrl	 &rCtrl = GetRichEditCtrl();			// Pointer auf das RichEditControl erstellen um dessen Funktionen zu nutzen
    	//	CHARFORMAT		 cfm;	;// Struktur die die Aktionen der Selektion enthält
    	rCtrl.SetWindowText (pDoc->m_cstrAusgabe);
    
    	rCtrl.SetFont(pDoc->m_ptrFont);
    	rCtrl.SetModify(TRUE);		
    
    }
    

    Ich bekommzwar keine Fehlermeldung aber es klappt nicht und ich steig nicht mehr durch !
    Könntest Du's nicht aktiv korrigieren ?
    Oder ist da so viel falsch ?

    Gruß
    ShadowEater



  • 😉



  • ShadowEater schrieb:

    P.S.:
    Wenn es einfacher ist, dann isses mir auch recht das View über sein Doc zu updaten !

    Gruß
    ShadowEater



  • Übrigens:

    Such doch mal nach UpdateAllViews hier im Forum in den letzten beiden Wochen...

    Was soll das jetzt, klingt als hättest Du keine Lust mehr 😕

    ShadowEater



  • 😕 😕 😕 isses denn so aussichtslos 😕 😕 😕

    Gruß
    ShadowEater


  • Mod

    Nein! Ich habe keine Lust immer das selbe zu schreiben...


Anmelden zum Antworten