Buttongröße anpassen



  • Hallo @all,

    ich programmiere zur Zeit mit der WinApi unter Win7 und versuche meine Anwendung
    etwas mehr nach Win7 aussehen zu lassen 😛
    Wie ich das Win7 Theme hinbekomme sowie das ändern der Schriftart habe ich schon hinbekommen, jedoch habe ich folgendes Problem:

    Mit

    GetDialogBaseUnits();
    

    kann ich mir z.B. für Buttons die Standard Höhe und Breite ermitteln lassen.
    Mein Problem bezieht sich jetzt auf die Breite, angenommen ich habe ein Button mit einem langen Label ( "BeendenBeendenBeendenBeendenBeendenBeenden" ) , dann schießt dieser über die Grenzen des buttons hinaus,
    aber ich möchte, dass mein Button sich möglichst WindowsLike an die Länge anpasst.
    Hoffe ich konnte verständlich erklären, was ich wollte und hoffe ihr könnt mir weiterhelfen;

    Danke und mfG
    Hlymur

    case WM_CREATE:
    	{
    		hButton = CreateWindow( "button" ,
    		"BeendenBeendenBeendenBeendenBeendenBeenden" ,
    		WS_CHILD | WS_VISIBLE | BS_FLAT | BS_TEXT ,
    		0 , 0 , 0 , 0 ,
    		hWnd ,
    		NULL ,
    		( (LPCREATESTRUCT) lParam )->hInstance ,
    		NULL );
    
    		SendMessage( hButton , WM_SETFONT , (WPARAM) (HFONT) GetStockObject( DEFAULT_GUI_FONT ) , (LPARAM) MAKELONG( TRUE , 0 ) );
    		return 0;
    	}
    	case WM_SIZE:
    	{
    		LONG units = GetDialogBaseUnits( );
    		MoveWindow( hButton , 5 , 5 , MulDiv( LOWORD( units ) , 50 , 4 ) , MulDiv( HIWORD( units ) , 14 , 8 ) , TRUE );
    		return 0;
    	}
    


  • Die ideale Größe für den Text bekommst du damit:

    Button_GetIdealSize macro



  • Ah Perfekt, dank dir 🙂


Anmelden zum Antworten