änderungen überprüfen?
-
ich versuch schon die ganze zeit ne abfrage zu amchen ob ein text geändert wurde:
ich definiere eine globale variable:char *lpstrOrigText;dann fülle ich die variable mit dem inhalt des textedits sobald dieses erstellt wurde:
lpstrOrigText = new char[GetEditTextLength(textField)]; GetWindowText(textField,lpstrOrigText, GetEditTextLength(textField));wenn man nun auf schliessen klickt soll überprüft werden ob der text geändert wurde:
if(LOWORD(wParam) == ID_DATEI_SCHLIESSEN) { char *lpstrOrigTextX = new char[GetEditTextLength(textField)]; GetWindowText(textField,lpstrOrigTextX, GetEditTextLength(textField)); if(lpstrOrigText == lpstrOrigTextX) { SetWindowText(fileZeiger,""); SetWindowText(textField, ""); break; } else { MessageBox(NULL,lpstrOrigTextX,"save?",0); break; }Nur leider kriege ich jetzt IMMER die msgBox, sogar wenn Nichts im fenster war und ist!
wenn ich das ganze abändere auf:if(LOWORD(wParam) == ID_DATEI_SCHLIESSEN) { char *lpstrOrigTextX = new char[GetEditTextLength(textField)]; GetWindowText(textField,lpstrOrigTextX, GetEditTextLength(textField)); if(strlen(lpstrOrigText) == strlen(lpstrOrigTextX)) { SetWindowText(fileZeiger,""); SetWindowText(textField, ""); break; } else { MessageBox(NULL,lpstrOrigTextX,"save?",0); break; }also überprüfung der textLÄNGE dann funzt es perfekt so wie ich es will, bis auf das problem, dass wenn die Textlänge gleich ist, keine nachfrage kommt! wieso funktioniert der vergleich der zwei chars nicht?
-
hab die funktion umgeschrieben:
bool checkIfSaved(HWND hTextField, char *lpStrOldCont) { char *lpstrOrigTextX = new char[GetEditTextLength(hTextField)]; GetWindowText(hTextField,lpstrOrigTextX, GetEditTextLength(hTextField)); for(int i=0;i<GetEditTextLength(hTextField);++i) { if(lpStrOldCont[i] != lpstrOrigTextX[i]) { return FALSE; } } return TRUE; }nun klappts...
-
Hallo,
also ich habe jetzt einige deiner Fragen hier im Forum gesehen, und oft mangelt es an C-Grundlagen (nicht einmal WinAPI-Grundlagen), ohne C-Grundlagen wirst du immer wieder auf (für dich) unerwartete Verhaltensweisen deines Programms stoßen. Auch jetzt geht es wieder um ein Grundsatz-Problem, man kann in C char-Arrays nicht mit dem "=="-Operator vergleichen, hiermit werden nur die Zeiger verglichen, nicht die Zeichen selbst!
Deshalb nur ein Tipp von mir: sehe dir die Funktion lstrcmp einmal an:
du siehst also, dein Problem hat nichts mit WinAPI zu tun, und ich kann nach Hepi dir nur noch einmal raten, deine Grundlagen zumindest aufzufrischen, und ich hoffe, daß du nicht resistent gegen solche Ratschläge bleibst

habe gerade bei der Vorschau festgestellt, daß du selber programmierst, was die oben angegebene Funktion sowieso macht. Du kannst so zwar Probleme umgehen, aber das eigentliche Verständnis, warum etwas nicht funktioniert, bleibt dann auf der Strecke (ok, manchmal muß man als Entwickler auch Probleme mit einem workaround lösen können, also einen kleinen Pluspunkt für deine Bemühungen kann man dann doch vergeben, aber dieses Problem hier ist elementar).
MfG
-
meine güüte...habt ihr denn ein tut was all diese grundlagen behandelt? wenn ja, dann sagts mir!