Negative Zahlen



  • Okey hier!

    itoa(intZahl, sBuffer,10);
    SetDlgItemText(hwnd,IDC_StaticText, sBuffer);
    

    Mir ist auch nicht klar was da schief laufen kann!



  • Glückwunsch Gast123: Du hast es geschafft! 😋
    👎 Inf.Student - mache Deinen Inf fertig und suche Dir einen Job. Ich würde Dich einstellen! 😃



  • Was habe ich geschafft??
    So funktioniert es nicht!!!



  • Kann mir keiner helfen?



  • Ist gut jetzt. Der Witz ist ausgelutscht.



  • Das soll kein Witzt sein!

    Wenn du so nett wärest und es ausprobieren würdest, dann wirst du sehen das genau dieses Problem auftritt welches ich beschrieben habe!



  • Dann zeig einfach mal mehr Code, da läuft anscheinend echt was schief.



  • @Badestrand: Danke, dass du als einziger bereit bist, mir zu helfen! 👍

    Ich habe nur ein Fenstern und einen Button! Wenn ich den Button drücke soll das Programm die Zahl die als int angegeben ist in ein char Array umwandeln! Danach soll die Zahl in einem Label angezeigt werden! Das wars...es funkt aber leider nicht.Die Zahlen werden trotzdem negativ angezeigt,,,

    int intZahl=" 180";
    unsigned char sBuffer[5];
    
    itoa(intZahl, sBuffer,10);
    SetDlgItemText(hwnd,IDC_StaticText, sBuffer);
    

    Danke!



  • #include <windows.h>
    
    LRESULT CALLBACK WinProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
    {
    	switch ( Msg )
    	{
    		case WM_CLOSE:
    		{
    			PostQuitMessage( 0 );
    		} break;
    
    		case WM_COMMAND:
    		{
    			if ( LOWORD(wParam) == 12345 )
    			{
    				int zahl = 1800;
    				char buffer[20];
    				itoa( zahl, buffer, 10 );
    				SetDlgItemText( hWnd, 23456, buffer);
    			}
    		} break;
    	}
    	return DefWindowProc( hWnd, Msg, wParam, lParam );
    }
    
    int main(){	HINSTANCE hInstance = GetModuleHandle(NULL);
    
    	MSG Msg;
    	WNDCLASSEX ex;
    
    	ZeroMemory( &ex, sizeof( WNDCLASSEX ) );
    	ex.cbSize = sizeof(WNDCLASSEX);
    	ex.style = CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
    	ex.lpfnWndProc = WinProc;
    	ex.hInstance = hInstance;
    	ex.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    	ex.hCursor = LoadCursor( NULL, IDC_ARROW );
    	LOGBRUSH lb = { BS_SOLID, GetSysColor(COLOR_3DFACE), 0 };
    	ex.hbrBackground = CreateBrushIndirect( &lb );
    	ex.lpszClassName = "bla";
    	RegisterClassEx(&ex);
    
    	HWND hWnd = CreateWindowEx( NULL, "bla", "Window", WS_OVERLAPPEDWINDOW, 0, 0, 300, 300, NULL, NULL, hInstance, NULL );
    	CreateWindow( "BUTTON", "Drück mich", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 10, 10, 75, 20, hWnd, (HMENU)12345, hInstance, NULL );
    	CreateWindow( "STATIC", "Hallo...", WS_CHILD|WS_VISIBLE, 10, 50, 75, 20, hWnd, (HMENU)23456, hInstance, NULL );
    	ShowWindow( hWnd, SW_SHOW );
    	UpdateWindow( hWnd );
    
    	while ( true )
    	{
    		GetMessage( &Msg, NULL, 0, 0 );
    		if ( Msg.message == WM_QUIT )
    			break;
    		TranslateMessage( &Msg );
    		DispatchMessage( &Msg );
    	}
    	UnregisterClass( "bla", hInstance );
    	return Msg.lParam;
    }
    


  • int intZahl="180" ist absoluter Quatsch, das ist ein Byte characters, kein integer-Wert. Also hier liegt der Hase im Pfeffer. Jetzt hast du es wohl hoffentlich. Inf.Student mag Dich nicht, er meint er sei etwas besseres. 😃



  • The simple way is:

    int iValue = 12345;
    SetDlgItemInt(hDlg, CTRL_ID, static_cast<UINT>(iValue), TRUE);
    

    Wobei der letzte Parameter (und der Typ und Wert des vorletzten) halt vom Kontext abhängt 😉 .


Anmelden zum Antworten