schriftgröße



  • hallo,
    ich habe mit der Toolbox meinem Dialog einen static text verpasst.
    leider soll das eine große dicke überschrift(programmname) sein.
    Wie kann ich diesen static text größer machen bzw. in einer anderen schriftart?
    Danke


  • Mod

    1. Neuen Font mit CreateFontIndirect anlegen.
    2. WM_SETFONT mit neuem Font Handle an das COntrol senden.
    3. Font erst zerstören, wenn das Control nicht mehr benötigt wird.



  • danke, bin schon so weit:

    case WM_INITDIALOG:
    		 lf.lfWeight = 100;
    		 hfont = CreateFontIndirect(&lf);
    		 return TRUE;
    
    	case WM_SETFONT:
    		 return TRUE;
    

    was muss ich jetzt hier bei WM_SETFONT machen?
    Danke



  • Du mußt WM_SETFONT an das Control im Dialog senden.
    In Deinem Konstrukt wertest Du aber WM_SETFONT aus!

    Hab Dir mal aus meinem Code zusammengeschnippelt, hoffe es ist so selbsterklärend?

    LOGFONT struct_logfont;
    static HFONT hfont_fett;  // <- "static" ist hier wichtig!
    
    switch ( message )
    {
      case WM_INITDIALOG:
      //Dialog einrichten.
      ...
      ...
      //** Einen Font (fett) für die Controls in Dialogboxen erzeugen **
      hfont_fett = (HFONT)SendMessage( hwnd_dialog, WM_GETFONT, (WPARAM)0, (LPARAM)0 );  //Original-Font vom Dialog holen.
      GetObject( hfont_fett, sizeof( LOGFONT ), &struct_logfont );
      struct_logfont.lfWeight = FW_SEMIBOLD;  //Font in fett ändern.
      hfont_fett = CreateFontIndirect( &struct_logfont );
      if ( hfont_fett == NULL )
      {
        //Ein Fehler ist aufgetreten.
      }
      SendDlgItemMessage( hwnd_dialog, IDC_STATICTEXT_NR1, WM_SETFONT, (WPARAM)hfont_fett, (LPARAM)0 );
      SendDlgItemMessage( hwnd_dialog, IDC_STATICTEXT_NR2, WM_SETFONT, (WPARAM)hfont_fett, (LPARAM)0 );
      ...
      ...
      break;
    
      case WM_COMMAND:
      switch ( LOWORD( wParam ) )
      {
        case IDOK:      //Button "OK" wurde gedrückt.
        case IDCANCEL:  //Taste "Esc" wurde gedrückt.
        //Dialog beenden.
        EndDialog( hwnd_dialog, 0 );
        DeleteObject( hfont_fett );     //Den erzeugten Font wieder aus dem Speicher entfernen!
        ...
    

    HTH,
    Martin


  • Mod

    Besser ist es im WM_DESTROY solche Variablen aufzulösen und dann evtl. auch auf NULL/0 zu setzen.



  • @Martin:
    Danke für den Hinweis.
    Stimmt, klingt logischer.

    Martin



  • danke, ich will jedoch nur einen einzigen static text in der font setzten und nicht alle im programm!



  • sorry, das war ein dummes kommentar.
    vielen dank es geht jetzt


Anmelden zum Antworten