Ciò che è privato MFC e perché non sono accessibili attraverso l'interfaccia normale?

StackOverflow https://stackoverflow.com/questions/2044999

  •  20-09-2019
  •  | 
  •  

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

È stato utile?

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.

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