Edit Control, auf Enter Newline einfügen



  • Also ich bin mir ziemlich sicher, dass das schon sehr oft gefragt wurde, ich hab hier aber wirklich nichts passendes gefunden, also ich will beim drücken von Enter in einem Multiline Edit Control eine Newline einfügen (also "\r\n"). Ich hab das ganze schon gesubclasst, Fensterprozedur geändert und so weiter und so fort, meine Edit Control Prozedur sieht jetzt so aus:

    LRESULT CALLBACK EditProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	switch (message)
    	{
    		case WM_CHAR:
    		{
    			if (wParam == VK_RETURN)
    			{
    				int				TextLength;
    				char			*strText;
    
    				TextLength = GetWindowTextLength(hwnd);
    
    				strText = (char *)malloc((TextLength + 3) * sizeof(char));
    
    				GetWindowText(hwnd,strText,TextLength + 1);
    
    				strcat(strText,"\r\n");
    
    				SetWindowText(hwnd,strText);
    
    				SetFocus(hwnd);
    				SendMessage(hwnd,EM_SETSEL,TextLength+2,TextLength+2);
    			}
    			else
    			{
    				return CallWindowProc(OrigProc,hwnd,message,wParam,lParam);
    			}
    		}
    		break;
    
    		default:
    			return CallWindowProc(OrigProc,hwnd,message,wParam,lParam);
    	}
    }
    

    Im Prinzip alles sehr einleuchtend, funktioniert nur nicht perfekt, wenn ich beim bearbeiten von WM_CHAR eine MessageBox nach der bearbeitung ausgebe, arbeitet die Funktion perfekt, wenn nicht, wird allerdings automatisch der Standardbutton "ausgelöst" und in meinem Falle ein Termin eingetragen. Das will ich aber nicht, es soll einfach nur eine NewLine eingefügt werden.
    Mach ich irgendwas falsch?



  • lol

    das ist schon eingebaut. du brauchst die styles ES_MULTILINE und ES_WANTRETURN



  • Klappt nicht, gleicher Effekt, Standardbutton wird ausgelöst.



  • kannst du vielleicht den ganzen code posten? :p



  • Was willste denn noch?



  • Den Code, wie du es mit ES_WANTRETURN versucht hast! Denn damit sollte es ja eigentlich klappen:

    Specifies that a carriage return be inserted when the user presses the ENTER key while entering text into a multiline edit control in a dialog box. If you do not specify this style, pressing the ENTER key has the same effect as pressing the dialog box's default push button. This style has no effect on a single-line edit control.
    To change this style after the control has been created, use SetWindowLong.



  • Komisch, jetzt klappts, also danke lol0r 😉


Anmelden zum Antworten