SendMessage verdreht MemberVariable!
-
Hi zusammen ich will eigenlich was völlig unspektakuläres machen, aber es klappt nicht! Also ich will folgendes machen:
void COverviewView::OnBtnStandardOperations() { Element = 10;// im Debug sehe ich hier wirklich noch die 10 in Element AfxGetMainWnd()->SendMessage(WM_COMMAND, IDM_MAIN);// nach der Zeile steht Schrott drin! }
Warum steht da nach der SendMessage plötzlich Schrott drin kann mir das jemand sagen?
Danke schon mal
-
dachte das sei sehr trivial, aber wenn sich hier so schnell niemand meldet wohl doch nicht! Fehlen euch noch irgendwelche Infos?
Bitte helft mir!
-
Mach mal ein Trace als letzte Zeile.
Was passiert im Messagehandler?
-
estartu_de schrieb:
Mach mal ein Trace als letzte Zeile.
Was passiert im Messagehandler?
Hey du kennst mich doch bitte langsam!
-
Man kanns ja mal versuchen.
void COverviewView::OnBtnStandardOperations() { Element = 10;// im Debug sehe ich hier wirklich noch die 10 in Element AfxGetMainWnd()->SendMessage(WM_COMMAND, IDM_MAIN);// nach der Zeile steht Schrott drin! TRACE("%d", Element); // müsste so gehen, sonst musstes erst in einen Strig stecken. }
Wenn es da auch nicht stimmt, dann zeig mal, was die Funktion, die durch das SendMessage ausgelöst wird (das ist der Messagehandler, die Funktion, die die Nachricht behandelt) macht.
-
OK das mit dem
TRACE("%d", Element);
geht ohne in nen String kopieren, doch es ändert sich nichts an dem Problem. Ich werde mich mal schlau machen müssen was ein TRACE denn eigentlich tut.
Mein Messagehandler kommt dir glaub ich auch nicht ganz unbekannt vor:
void CMainFrame::OnMain() { SwitchView(IDD_DOKUMENTENVERWALTUNG); }
Brauchst noch mehr"
-
Polofreak schrieb:
OK das mit dem
TRACE("%d", Element);
geht ohne in nen String kopieren, doch es ändert sich nichts an dem Problem. Ich werde mich mal schlau machen müssen was ein TRACE denn eigentlich tut.
Mach das mal, dann sehen wir weiter. TRACE sollte man kennen.
Kleiner Tip:
Breakpoint auf die Zeile setzen, mit F5 starten, drauflaufen, F10 drücken und in den Ausgabebereich im VC gucken.
-
estartu_de schrieb:
... Mach das mal, dann sehen wir weiter. ...
was? in nen String konvertieren? Glaub kaum das des was bringt
MSDN schrieb:
TRACE( "Integer = %d, String = %s\n", i, sz );
Falls du meintest ich soll das mit dem Trace einfach probieren, hab ich schon tut sich nichts
estartu_de schrieb:
... Kleiner Tip:
Breakpoint auf die Zeile setzen, mit F5 starten, drauflaufen, F10 drücken und in den Ausgabebereich im VC gucken.Kenn ich schon hab ich mir schon von dir sagen lassen!
Seit dem mach ich immer seltener strg + F10
-
Polofreak schrieb:
estartu_de schrieb:
... Mach das mal, dann sehen wir weiter. ...
was? in nen String konvertieren? Glaub kaum das des was bringt
MSDN schrieb:
TRACE( "Integer = %d, String = %s\n", i, sz );
Falls du meintest ich soll das mit dem Trace einfach probieren, hab ich schon tut sich nichts
Neee, du solltest blos in die MSDN gucken, was das macht.
Hast du denn im Ausgabebereich was gesehen? Oder was sagt der Debug zum Inhalt der Variablen?
Wenn der wirklich falsch ist:
Wo wird die überall verändert? Setz da Breakpoints drauf und guck, ob du drüberläufst.
-
mach einfach das Element als const
-
Im Ausgabebereich steht immer -80384336 oder eine ähnlich große negative Zahl. Ich hab die Membervariable vom Typ int gerade erst angelegt und will sie in nem anderen Dialog haben. Punkt ist der je nach dem welcher Button geclickt ist will ich in meinem Recset unterschiedliche Tabellen öffnen.
Und ich glaub ich weiß auch woran es liegt, ähnlich wie neulich aber ich weiß nicht wie ich es behebe.
Ich mach nämlich folgendes im Set:
COverviewView OV; int tst= OV.Element;
Nun legt er ja ne neue Referenz zu meiner Klasse COverviewView da kann die Variable ja nicht belegt sein und drum nimmt er da auch nen Scheiß!
Also sollte ich das andersrum machen, nicht von der Overview die Member holen sondern von der Overview an den Set übergeben oder?Bei Dialogen ging das, wenn ich sie dann mit dieser Referenz gemodalt hab, aber den RecSet kann ich ja nicht modalen!
Wat mach ich nu??
-
Nochmal langsam bitte:
Welche Klassen sind beteiligt? Wie kennen die sich? Welche Info willst du von wo nach wo haben?Kennt der View das Set? Dann mach einfach eine SetFunktion in das Set, mit der der View die Variable füllen kann.
-
Joa ne Set FKT sollte klappen, das versuch ich jetzt, falls dies nicht klappen sollte jammer ich hier nochmal!
-
AAAAAAAHHHH bin ich jetzt bescheuert??
RUHE BEWAHREN!
So jetzt!
Ich hab es mit einer Set mit einer get mit der direkten zuweisung der Variable aus beiden Richtungen probiert nichts klappt!
Also ich will folgendes machen:
Ich hab OverviewView, RecView und den RecsetOverView öffnet RecView und übergibt an Recset ne Variable, nach der entsprechend eine bestimmte Tabelle für den Recset geöffnet werden soll.
Wie stell ich das jetzt an?
-
Overview ist dein "Hauptmenü", richtig? Also ein View.
Das macht mit switchView einen zweiten auf.Zwei Views untereinander kennen sich nicht. Die können nix hin oder her geben.
Du musst also einen Umweg gehen.Mach doch eine Variable im Mainframe (oder in der App), wo du den Wert speicherst.
Der OverView packt den Wert rein und das RecSet holt ihn wieder raus und kann damit arbeiten.
Nicht schön, sollte aber funktionieren.
-
estartu_de schrieb:
... Zwei Views untereinander kennen sich nicht. Die können nix hin oder her geben. ...
Moment ich will die Variable doch von der View an den Set geben, ist das da gleiches Problem??
-
Polofreak schrieb:
estartu_de schrieb:
... Zwei Views untereinander kennen sich nicht. Die können nix hin oder her geben. ...
Moment ich will die Variable doch von der View an den Set geben, ist das da gleiches Problem??
Jetzt nochmal langsam für Blondinen bitte:
Von wo aus willst du das RecSet füllen? (Also welcher View?)
In welcher Klasse ist das RecSet ein Member?
-
Bist du blond? Würd gern mal ein Bild von dir sehen
öhm also:
View1 öffnet View2 und übergibt an Recset ne Variable
Naja wirklich füllen will ich das Recset eigentlich nicht ist ja nur eine Variable.Schau mal in deine Mails, hab dir ne Skizze gemalt
-
Von was ist Recset ein Member?
Die Info fehlt irgendwie immer noch, und ohne kann ich dir den "Pfad" nicht beschreiben.
Das geht leider auch nicht aus der Skizze hervor.
-
ja also im RecView ganz normal wie es der Wizard macht und in der Übersichtsview brauch ich es nur hierfür, dazu hab ich mir in der Übersich ne Member vom Set angelegt.
Jetzt?