Ciò che è privato MFC e perché non sono accessibili attraverso l'interfaccia normale?
Domanda
Sto utilizzando MFC per lo sviluppo di gui e mi sono imbattuto su una funzione che potrebbe essere utile per quello che sto cercando di fare.La funzione è _AfxCompareClassName.Tuttavia, è incluso nel file "afximpl.h" che si trova nella directory "VC/altmfc/src/mfc/afximpl.h".Normale mfc include nella directory "VC/atlmfc/includono".
Ora da quello che ho raccolto quei file e funzioni situato in src/mfc sono considerati privati mfc (secondo questo tizio) e io non li uso.Perché ?Questa funzione non ha un aspetto piacevole.Che mi avrebbe aiutato a conoscere l'interfaccia utente attualmente sto.
In definitiva quello che volevo fare era cambiare la fuga/ritorno chiavi di comportamento in caso di modifica di un campo di testo (Controllo di Modifica).Le mie domande sono le seguenti :
- Che cosa è un privato MFC funzione ?
- Perché non dovrei usare quelle funzioni (Da quello che ho raccolto cambiano spesso, quindi, è perché io non li uso.C'è un altro motivo?)
- C'è un modo più pulito per fare quello che sto cercando di fare ?
Ho pensato che sarebbe bello avere qualche info su di private MFC dal momento che non sembra essere qualsiasi MODO finora.
Grazie mille, JC
Soluzione
Il 'privato' MFC file sono i dettagli di implementazione di MFC.Così come non si desidera o si aspetta che gli utenti delle lezioni per ottenere l'privato:dati o metodi, si dovrebbe fare affidamento su MFC implementazione a livello di codice di utilità.Nota che quasi ogni cosa interessante che si può trovare in MFC dettagli di implementazione è disponibile pubblicamente -- da qualche parte.Devi solo scavare.
C'è una funzionalità integrata in MFC che fa quello che vuoi.Si chiama RUNTIME_CLASS, ed ecco il codice di esempio da MSDN:
// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" ) == 0 );
Altri suggerimenti
È "privato", come si trova nell'albero dei sorgenti piuttosto che l'esterno comprende cartella.
Non si devono usare le funzioni definite in questi documenti sono interni per l'attuazione di MFC e potrebbe anche cambiare.
Se si ha realmente bisogno la funzionalità è possibile copiare il codice (con adeguata attribuzione) e metterlo in una delle classi, anche se questo è ben lungi dall'essere ideale.Mi piacerebbe cambiare il nome della funzione troppo.