Domanda

Sto usando Visual Studio 6.0 (VC ++ con MFC) nella piattaforma Windows XP. Sto cercando di creare una casella di gruppo con il titolo della casella di gruppo come casella di controllo. La mia intenzione è questa: se la casella di controllo è abilitata, i controlli all'interno della casella di gruppo dovrebbero essere abilitati; oppure disabilitato.

È possibile realizzare questo? Se sì, per favore dammi alcune indicazioni.

Grazie.

È stato utile?

Soluzione

Ci sono alcune cose che puoi provare, a seconda di quanto vuoi rimanere fedele alla tua idea e di quanto lavoro sei disposto a fare nello sforzo:

Metodo semplice

Utilizza una normale casella di gruppo, quindi al suo interno fai in modo che il primo elemento sia la casella di controllo. Questo è semplice da realizzare, ma si perde l'obiettivo di avere la casella di controllo come titolo.

Metodo di disegno funky 1

Utilizza una normale casella di gruppo, quindi nello spazio in cui si conosce il titolo, posiziona la casella di controllo. Dovrai eseguire alcuni calcoli complicati per adattarlo perfettamente e disegnare bene senza sfarfallio.

Metodo di disegno funky 2

Usa una qualche forma di superclass o sottoclasse / sottoclasse nella casella di gruppo. È possibile ignorare il gestore WM_PAINT per disegnare solo il frame per la casella di gruppo. Metti una normale casella nel punto in cui sai che il titolo deve andare. Questo dovrebbe funzionare meglio perché avrai un maggiore controllo sul disegno, ma è probabile che sia difficile ottenere il giusto. Nella mia esperienza, la sottoclasse ha un rischio inferiore da implementare rispetto alla superclasse.

Altri suggerimenti

Stai usando l'editor Dialog? In tal caso, metti giù la casella di gruppo. Successivamente, sopra di esso, metti una casella di controllo sopra la linea della casella di gruppo. Modifica la risorsa per impostare l'ordine Z o eseguilo nel codice. Si desidera che la casella di controllo sia nella parte superiore della casella di gruppo. Aggiungi un gestore per la casella di controllo e abilita / disabilita i controlli in base allo stato della casella di controllo.

Ne ho scritto uno chiamato CGroupCheck qualche anno fa ed è disponibile su CodeProject: http: //www.codeproject.com/KB/buttons/groupcheck123.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top