¿Qué es MFC privado y por qué no son accesibles a través de la interfaz normal?

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Estoy usando MFC para el desarrollo de la GUI y me topé con una función que podría ser útil para lo que estoy tratando de hacer. La función es _AFXCOMPARECLASSNAME. Sin embargo, se incluye en el archivo "Afximpl.h" que se encuentra en el directorio "VC/ALTMFC/src/mfc/afximpl.h ". Normal MFC incluye están en el directorio" VC/ATLMFC/incluir".

Ahora, de lo que he reunido esos archivos y funciones ubicadas en SRC/MFC, se consideran MFC privado (Según este tipo) y no debería usarlos. Por qué ? Esta función se ve bien. Me ayudaría a saber en qué parte de la interfaz de usuario estoy actualmente.

En última instancia, lo que quería hacer era cambiar el comportamiento de las claves de escape/retorno al editar un campo de texto (editar control). Mis preguntas son las siguientes:

  • ¿Qué es una función MFC privada?
  • ¿Por qué no debería usar esas funciones (por lo que he reunido, cambian a menudo, por lo que no debería usarlas? ¿Hay otra razón?)
  • ¿Hay una forma más limpia de hacer lo que estoy buscando hacer?

Pensé que sería bueno obtener información sobre MFC privado, ya que no parece haber nada tan lejos.

Muchas gracias, JC

¿Fue útil?

Solución

Los archivos MFC 'privados' son los detalles de implementación de MFC. Así como no querría o esperar que los usuarios de sus clases obtengan en el privado: datos o métodos, no debe confiar en el código de utilidad de nivel de implementación de MFC. Tenga en cuenta que casi cualquier cosa genial que pueda encontrar en los detalles de implementación de MFC está disponible públicamente, en algún lugar. Solo tienes que cavar.

Hay funcionalidad incorporada en MFC que hace lo que desea. Se llama Runtime_class, y aquí hay código de muestra de MSDN:

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );

Otros consejos

Es "privado", ya que se encuentra en el árbol de origen en lugar de la carpeta externa incluye.

No debe usar funciones definidas en estos archivos, ya que son internas a la implementación de MFC y bien podrían cambiar.

Si realmente necesita la funcionalidad, podría copiar el código (con una atribución adecuada) y ponerlo en una de sus clases, aunque esto está lejos de ser ideal. Yo cambiaría el nombre de la función también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top