Wie Größe des Buttons anhand des Textes bestimmen?



  • Hi!
    Ich will nicht immer wieder width und heigth des Buttons explizit als Argument übergeben, sondern diese dynamisch berechnen als Funktion der Länge des Textes. So was:

    int cxChar = LOWORD(GetDialogBaseUnits()) + 4; // ??? ohne +4 werden die Buttons zu eng!!!
    int cyChar = HIWORD(GetDialogBaseUnits()) + 2; //???
    hWnd_ = CreateWindow ("button", 
    					caption,
    					style,
    					x, y,
    					_tcslen(caption) * cxChar, 7 * cyChar / 4,
    					parent, (HMENU)id,
    					hInst_, 0);
    


  • GetTextExtentPoint32() könnte dir helfen:
    http://msdn2.microsoft.com/en-us/library/ms534223.aspx
    Da die Funktion aber natürlich wissen muss mit welchem Font sie es zu tun hat musst du ihr ein HDC übergeben ... wie man das hier am klügsten anstellt weiß ich nicht.
    Ein GetDC() auf das Handle des Buttons könnte funktionieren, denke ich aber nicht. Vielleicht könntest du dir auch ein DC erstellen (CreateDC), dann dir einen Font erstellen (Standardschriftart: MS Sans Serif, größe 8), diesen Font mit SelectObject() auf den DC legen und diesen DC übergeben.



  • Ab WindowsXP gibts auch Button_GetIdealSize()


Anmelden zum Antworten