Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++ MFC]font distruzione

    ciao.
    ho il seguente pezzo di codice:
    if(pCombo->GetSafeHwnd())
    {
    CFont* f= pCombo->GetFont();
    f->DeleteObject();
    pCombo->DestroyWindow();

    }
    quando creo il combo gli assegno un font cosi:

    pCombo->SetFont(toolbar1.GetFont())

    non capisco perchè pur avendo assegnato il font mi da errore tutte le volte che faccio:
    CFont* f= pCombo->GetFont();
    per distruggere il font.
    grazie.

  2. #2
    Che errore ti dà?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ciao MItaly.
    dopo un po di utilizzo e aggiunta/rimozione del combo(a cui assegno il font della toolbar) il font diventa grandissimo e grassetto , non risco a capire perchè e per questo sto cercando di distruggere il font ,puo' essere questo il problema?
    Il codice che ti ho mandato(per tentare di distruggere il font)mi da questo errore:
    Unhandled exception at 0x7c24452a (mfc71d.dll) in CMP.exe: 0xC0000005: Access violation reading location 0x00000004.
    e si ferma sulla funzione:
    BOOL CGdiObject:eleteObject()
    {
    if (m_hObject == NULL)
    return FALSE;
    return :eleteObject(Detach());
    }
    del file mfc:wingdi.cpp
    grazie.

  4. #4
    "INFO: Correct Use of the SetFont() Function in MFC"
    http://support.microsoft.com/kb/q85518/

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ho provato MacApp, cosi:

    memset(&lf, 0, sizeof(LOGFONT)); // Clear out structure.
    lf.lfHeight = 20; // Request a 20-pixel-high font
    lf.lfWeight=0;
    strcpy(lf.lfFaceName, "Arial"); // with face name "Arial".
    m_font.CreateFontIndirect(&lf); // Create the font.

    pCombo->SetFont(&m_font,1);
    pCombo->Invalidate(1);

    dove pCombo è un combobox in inserito nella toolbar cosi:
    pCombo->Create(CBS_DROPDOWNLIST | WS_VISIBLE |
    WS_TABSTOP | WS_VSCROLL, rect,pToolBar->FromHandle(pToolBar->GetSafeHwnd()),uIdcombo);

    La scritta appare come in bold , ma non ho trovato questa proprietà(bold)ed ho messo weight =0
    grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    up

  7. #7
    Originariamente inviato da giuseppe500
    up
    Che vuoi sapere? Non vedo domande nel tuo penultimo post. Pensavo ti fosse tutto chiaro grazie al link che ti ho segnalato.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    la domanda macapp è perchè il font del combo mi appare in una specie di bold,e come si fa a
    settare il font del combo in modo da evitare questo(se ci sono degli errori nel mio codice o se l'errore dipende da qualcos altro).
    Grazie.
    ps.ricordo che il combo è inserito in una toolbar.

  9. #9
    Ti propongo un'ottima soluzione: non cambiare le font ;-)

    Sembra scherzosa ma non lo è. Per i seguenti motivi:
    1. Dal link che t'ho segnalato s'evince che non è un'operazione semplicissima;
    2. Che motivo hai per cambiarlo? Una volta che ci sei riuscito, in ogni modo poi il programma per poter funzionare correttamente, deve gestire la probabile assenza della font desiderata.
    3. Obblighi l'utente ad una tua scelta arbitraria.
    4. Facci caso ma ogniqualvolta vai ad utilizzare un'applicazione che modifica l'interfaccia standard del sistema operativo ospite, essa è BRUTTA.

    Insomma un lavoraccio, che va fatto solo se strettamente necessario in alcuni casi particolari (ad esempio se pagano molto bene per farlo).

    Ad esempio, una volta un cliente mi aveva chiesto, sotto windows, di evidenziargli in ROSSO un pulsante standard [OK] di una finestra di dialogo, ed io l'ho convinto che era un'operazione, dispendiosa, inutile dannosa.

    Concordi?
    ;-)

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie MacApp.
    Concordo pienamente con le tue affermazioni.
    Il problema è che quando lascio le impostazioni di default nel combobox dentro alla toolbar mi appare appunto fuori standard(appare in un grassetto strano) non so per quale motivo,e il mio problema è di rimettere in font standard il font della combo nella toolbar.
    Come si fa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.