ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
2105
2105
EMPFEHLEN
-
Hallo Leuts,
ich verzweifel gerade an mir selbst.
Folgendes ich habe ein Element vom Typ CTreeCtrl erzeugt
Code :1 2
m_Tree[i].Create(TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES|TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS|TVS_NOTOOLTIPS , r, this, START_ID_TREE+i); m_Tree[i].ModifyStyleEx(0, WS_EX_CLIENTEDGE, 0);
Folgende Messages werden abgefangen:
Code :1 2 3 4 5
ON_NOTIFY(NM_CLICK, START_ID_TREE+0, OnClickTree) ON_NOTIFY(NM_DBLCLK, START_ID_TREE+0, OnDblclkTree) ON_NOTIFY(NM_SETFOCUS, START_ID_TREE+0, OnSetfocusTree) ON_NOTIFY(TVN_SELCHANGED, START_ID_TREE+0, OnSelchangedTree) ON_NOTIFY(TVN_ITEMEXPANDED, START_ID_TREE+0, OnTvnItemexpanded)
Mein Problem:
Die OnSelchangedTree wird nicht aufgerufen. Der Code ist für XP und WinCE 5.0 geschrieben. auf dem WinCe 5.0 gibt es keine Probleme.
Kann mir jemand weiterhelfen? Bzw. nen Tip geben, wie ich testen/ermitteln kann wo das Problem ist?
Bräuchte dringend Hilfe. Vielleicht seh ich auch nur den Wald vor lauter Bäumen nicht.
Mit freundlichem Gruß
MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
-
Ich nochmal,
hab jetzt ne kleine Demo Anwendung geschrieben.
Zwei CTreeCtrl auf einer Dialogfeldbasierten Anwendung.Eines über den Wizard angelegt und eines in der OnCreate. Letzteres funktioniert nur eingeschränkt. Messages wie TVN_SELCHANGED und TVN_ITEMEXPANDED werden nicht ausgelöst.
Was mache ich anderes als der Wizard und wie kann ich das Problem lösen.
Gruß MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
-
Wenn Du TreeControls dynamisch anlegst, dann vergibst du auch die ID's dynamisch.
DAfür solltest du Dir einen Bereich von ID's reservieren, die Du dann beim Erzeugen verwendest. Vielleicht speicherst Du Dir die ID und den Zeiger auf das erzeugte TreeControl in einer map<int,CTreeCtrl*>.
Dann verwendest Duund die FunktionCode :1
ON_NOTIFY_RANGE(TVN_SELCHANGED, START_ID_TREE, END_ID_TREE, OnSelchangedTree)
Dort kannst du dann anhand der ID den Zeiger auf das entsprechende TreeCtrl aus der map holen.Code :1
afx_msg void OnSelchangedTree(UINT id, NMHDR *pNotifyStruct, LRESULT *pResult)
-
Danke für die Antwort,
das mit der Range wusste ich nicht hab da für jedes Element ne eigene Zeile spendiert
Werd das auf jedenfall mit aufnehmen. Nur leider löst das mein Problem nicht.
Beim Testprogramm habe ich nur ein Dynamisches Element und da reagieren die Controls genau wie in der eigentlichen Software. Irgendwie scheints, das die NOTIFY Nachrichten nicht weiter gegeben werden. Für CStatic gibts das SS_NOTIFY Flag für Trees hab ich ähnliches nicht gefunden
Andere Nachrichten wie die SetFocus oder Reaktion auf den Click werden an das Control weiter gereicht. Es muss also noch irgendwas anderes im Busch sein.
Hier einmal ein Auszug aus dem Quellcode:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
void CProjekt495Dlg::DoDataExchange(CDataExchange* pDX) { int i; CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CProjekt495Dlg) for(i=0 ; i<ANZ_TREE ; i++) DDX_Control(pDX, START_ID_TREE+i, m_Tree[i]); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CProjekt495Dlg, CMyDialog) //{{AFX_MSG_MAP(CProjekt495Dlg) //Tree #define ANZ_TREE 2 ON_NOTIFY(NM_CLICK, START_ID_TREE+0, OnClickTree) ON_NOTIFY(NM_DBLCLK, START_ID_TREE+0, OnDblclkTree) ON_NOTIFY(NM_SETFOCUS, START_ID_TREE+0, OnSetfocusTree) ON_NOTIFY(TVN_SELCHANGED, START_ID_TREE+0, OnSelchangedTree) ON_NOTIFY(TVN_ITEMEXPANDED, START_ID_TREE+0, OnTvnItemexpanded) ON_NOTIFY(NM_CLICK, START_ID_TREE+1, OnClickTree) ON_NOTIFY(NM_DBLCLK, START_ID_TREE+1, OnDblclkTree) ON_NOTIFY(NM_SETFOCUS, START_ID_TREE+1, OnSetfocusTree) ON_NOTIFY(TVN_SELCHANGED, START_ID_TREE+1, OnSelchangedTree) ON_NOTIFY(TVN_ITEMEXPANDED, START_ID_TREE+1, OnTvnItemexpanded) //}}AFX_MSG_MAP END_MESSAGE_MAP() //Schnittstellen aus dem Header afx_msg void OnClickTree(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDblclkTree(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnSetfocusTree(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnTvnItemexpanded(NMHDR *pNMHDR, LRESULT *pResult);
Ich weiß die MessageMap ist nicht dolle aber da hab ich ja jetzt ne bessere Lösung
Ist denn da irgendein Fehler erkennbar?
Ich steh echt auf dem Schlauch.
Wie gesagt bei dem Embedded System für WinCE 5.0 gibt es keine Probleme.
Gruß MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
-
Tut mir leid, aber dann weiß ich auch nicht mehr weiter. Der Code schaut soweit gut aus. Vielleicht hat ja noch jemand eine zündende Idee.
-
Möglicherweise kollidiert die dynamische ID mit einer bereits verwendeten ID?
Ansonsten würde ich auf den ganzen MessageMap-Krempel verzichten und über OnNotify/PreTranslateMessage/OnCommand direkt auf die Nachrichten abfragen. Dort kannst du dann auch mit dem HWND vergleichen.
-
Falls die dynamische Id mit ner anderen im Konflikt stände würde dann nicht auch der ganze andere Messegekram für dieses Element schieflaufen? Und in meinem Demo Programm hab ich das selbe Problem und da sind andere Ids.
Irgendwie ist mir das mal richtig suspekt...
Gruß MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
-
Guten Morgen,
so das Problem hat sich gelöst.
Das Problem ist dem Unicode zuzuordnen.
Ersetzt man TVN_SELCHANGED durch TVN_SELCHANGEDW klappt das ganze.
Hoffe der Nachwelt ist damit geholfen.
So Long
MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
-
Hi Michael,
ich hatte dasselbe Problem, stundenlang rumprobiert, bis ich deinen Beitrag fand.
Die Lösung ist unglaublich; da muss man erst mal drauf kommen.
Du hast mir sehr geholfen!
Ähnliche Themen
-
Dringendes Problem...
Von deadline im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 08.09.06, 19:28 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Habe ein dringendes Problem!
Von Tacko im Forum PHPAntworten: 5Letzter Beitrag: 10.09.04, 15:45 -
ganz dringendes problem
Von sonix-planet im Forum HTML & XHTMLAntworten: 6Letzter Beitrag: 06.05.03, 14:58 -
Dringendes Problem mit AS******
Von K@C im Forum Flash PlattformAntworten: 2Letzter Beitrag: 01.12.01, 11:33





Zitieren
Login






