Mal wieder 'edit'



  • Du sollst nich alles zusammenschmeißen, sondern einfach nur GetDlgItemInt aufrufen 😉

    UINT zahl = GetDlgItemInt(hWndParent, IDE1_EISEN, NULL, FALSE);
    


  • Hiho...
    ich wollte mit der Codestelle ausdrücken, dass ich alle drei versionen getestet habe un keine zum ergebnis geführt hat.

    hab jetzt mal den code von flenders ausprobiert. jetzt steht im buffer der wert:
    3435973836 aber immernoch nich meine erhoffte 123 :*(

    muss mit dem ergebnis noch was gemacht werden (casten oder sowas)?

    cu Laubi



  • erst einmal solltest du im stil vom edit festlegen, dass dort nur Zahlen eingegeben können, danach kannst du den Text in einem Ansizeigerarray speichern und per atoi oder atol zu einem int wert (Bei atoi) oder zu einem long wert (bei atol) konvertieren und fertig



  • Laubfrosch schrieb:

    hab jetzt mal den code von flenders ausprobiert. jetzt steht im buffer der wert:
    3435973836 aber immernoch nich meine erhoffte 123 :*(

    zeig mal deinen code !!! der wie flenders es gesagt hat müsste es gehen

    Laubfrosch schrieb:

    muss mit dem ergebnis noch was gemacht werden (casten oder sowas)?

    nein ausser du liesst einen text aus, dann musst du konvertieren wie jeanlebon es gesagt



  • Hiho hier ist der code von der Callback funktion:

    #define IDE1_EISEN 1301
    #define IDPB_1 6101
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	int wmId, wmEvent;
    	PAINTSTRUCT ps;
    	HDC hdc;
    	static HBITMAP hBitmap;
    	BITMAP bitmap;
    	int len = SendMessage(hWndEdit01, WM_GETTEXTLENGTH, 0, 0);
    	UINT buffer;
    
    	switch (message) 
    	{
    	case WM_COMMAND:
    		wmId    = LOWORD(wParam); 
    		wmEvent = HIWORD(wParam); 
    		switch (wmId)
    		{		
    		case IDPB_1:
    			buffer = GetDlgItemInt(hWndEdit01, IDE1_EISEN, NULL, TRUE);
    			break;
    
    		default:
    			return DefWindowProc(hWnd, message, wParam, lParam);
    		}
    		break;
    
    	case WM_CREATE:
    		if (!(hWndLable01 = CreateWindowEx(NULL, 
    			"button",
    			"Berechnen",
    			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    			710,515,
    			80,30,
    			hWnd,
    			(HMENU)6101,
    			GetModuleHandle(NULL),
    			NULL)))
    		return 0;
    
    		if(!(hWndEdit01 = CreateWindowEx(NULL,
    			"EDIT",
    			"",
    			WS_CHILD | WS_VISIBLE | ES_NUMBER,
    			50, 110,
    			60,15,
    			hWnd,
    			(HMENU)1301,
    			GetModuleHandle(NULL),
    			NULL)))
    		return 0;
    
    	default:
    		return DefWindowProc(hWnd, message, wParam, lParam);
    	}
    	return 0;
    }
    

    habe den Code aml auf das wichtigste beschränkt...wäre sonst zu lang.

    ich hoffe der code reicht.
    cu Laubi



  • LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	int wmId, wmEvent;
    	PAINTSTRUCT ps;
    	HDC hdc;
    	static HBITMAP hBitmap;
    	BITMAP bitmap;
    //	int len = SendMessage(hWndEdit01, WM_GETTEXTLENGTH, 0, 0); unwichtig (denke ich)
    	UINT buffer;
    
    	switch (message) 
    	{
    	case WM_COMMAND:
    		wmId    = LOWORD(wParam); 
    		wmEvent = HIWORD(wParam); 
    		switch (wmId)
    		{		
    		case IDPB_1:
                            {
    			buffer = GetDlgItemInt(hWndEdit01, IDE1_EISEN, NULL, TRUE); // HIER sollte buffer stimmen
                            // test
                            char szTemp[256];
                            sprintf(szTemp, "Editboxinhalt %d", buffer);
                            MessageBox(hWnd, szTemp, "info", MB_OK);
                            } 
    			break;
    
    // wo hast du DAS denn her ?
    //		default:
    //			return DefWindowProc(hWnd, message, wParam, lParam);
    		}
    		break;
    


  • hWndEdit01 ist auch sicher static?

    BTW: Was ist an DefWindowProc() falsch, ob er das nun am Schluss oder als default macht ist doch egal.

    MfG SideWinder



  • Du sollst bei GetDlgItemInt nicht das Handle des Edits einsetzen, sondern das des Parents - also hWnd



  • Und das mit return 0 nach den if's bei WM_CREATE sieht auch etwas komisch aus:

    If an application processes this message, it should return zero to continue creation of the window. If the application returns 1, the window is destroyed and the CreateWindowEx or CreateWindow function returns a NULL handle.



  • Hiho...
    Danke an alle für eure Ratschläge und den Quellcode von miller_m.
    Das Problem war das Handel. Muss in der Tat

    buffer = GetDlgItemInt(hWnd, IDE1_EISEN, NULL, TRUE);
    

    sein und nicht

    buffer = GetDlgItemInt(hWndEdit01, IDE1_EISEN, NULL, TRUE);
    

    THX nochmal cu Laubi


Anmelden zum Antworten