Quiero agregar una función de inicialización personalizada en una clase dll.
Propietario, no comprende el mecanismo operativo de MFC. Depende de lo que escriba, por lo que primero debe comprender su mecanismo operativo y qué son los distintos CPP.H.
p>Permítanme presentárselo
En los programas MFC, no solemos llamar directamente a la API de Windows. En su lugar, creamos objetos a partir de clases MFC y llamamos a funciones miembro que pertenecen a estas. objetos. En otras palabras, MFC encapsula la API de Windows. Dijiste que te gusta C++ y MFC es una biblioteca de funciones escrita en C++. Puedes llamar a estas funciones, pero estas clases no las escribes tú.
MFC proporciona cientos de clases, entre las cuales se encuentran las clases más importantes. esencial para escribir cualquier aplicación VC++.
MFC proporciona cientos de clases, las más importantes de las cuales son esenciales para escribir cualquier aplicación VC++.
1> Función de encapsulación: el marco MFC consta de una biblioteca de clases MFC, y la biblioteca de clases MFC es una biblioteca de clases C ++. Estas clases encapsulan la interfaz de programación de aplicaciones WIN32, la funcionalidad OLE (Object Link Embedding), la funcionalidad de acceso a datos ODBC y DAO.
2> Función de herencia: MFC abstrae muchas clases con las mismas características y diseña algunas clases base como base para implementar otras clases. Las más importantes de estas clases son la clase CObject y la clase CCmdTarget, que los programadores pueden lograr. funciones específicas y lograr propósitos de programación derivando las clases MFC correspondientes.
3> Mapeo virtual y de mensajes: MFC se basa en C ++ y, por supuesto, admite funciones virtuales. Sin embargo, como marco de programación, debe resolver el problema de la eficiencia: si MFC solo admite restricciones dinámicas a través de funciones virtuales. , una gran cantidad de tablas de funciones virtuales hacen que el marco de programación esté demasiado inflado y consume más memoria. Sin embargo, MFC crea un mecanismo de mapeo de mensajes, que reduce el uso de memoria y mejora en gran medida la eficiencia.
El mapeo de mensajes es una tabla que asocia mensajes con funciones miembro. Cuando la ventana del marco de una aplicación recibe un mensaje, MFC busca el mapa de mensajes de la ventana y, si hay un controlador que puede manejar el mensaje, llama a ese controlador.
Utiliza macros para asignar mensajes a funciones miembro, y estas funciones no tienen que ser funciones miembro virtuales, por lo que no es necesario generar una tabla de funciones virtuales (tabla V) muy grande para el mensaje. Función de mapeo, ahorra así memoria.
Mecanismo de mapeo de mensajes MFC:
Asocia mensajes con funciones de controlador de mensajes para formar un mecanismo de correspondencia uno a uno.
Macro de mapa de mensajes
Declaración: DECLARE_MESSAGE_MAP
Definición:
BEGIN_MESSAGE_MAP
ON_COMMAND
ON_CONTROL
ON_MESSAGE
END_MESSAGE_MAP
Componentes principales de MFC: clases, macros y funciones globales.
Las clases son los componentes principales de MFC. Las clases en MFC están organizadas de forma jerárquica y divididas en dos partes. Con la excepción de unas pocas clases auxiliares, la mayoría de las clases MFC derivan directa o indirectamente de la clase raíz CObject.
Las funciones principales de las macros MFC: mapeo de mensajes, servicios de tipo de objeto en tiempo de ejecución, servicios de diagnóstico y manejo de excepciones.
Convención MFC: el prefijo de función global es "Afx", el prefijo de variable global es "afx"
Jerarquía de clases MFC
Proyecto CObject class) -> CCmdTarget (clase MessageResponse) ->
{
CWinThread (clase Thread) -> CWinApp (clase de aplicación de ventana)
CDocument (clase de documento )
CWnd (clase de formulario)->[
CFrameWnd (clase de marco)
CView (clase de vista)
]
}
Clase CObject Dado que la mayoría de las clases en MFC heredan de la clase CObject, y la clase CObject describe algunas características comunes de casi todas las clases MFC, la clase CObject proporciona a los programadores características como diagnóstico de objetos, reconocimiento de tipos de tiempo de ejecución y serialización.
La clase CCmdTarget se deriva directamente de la clase CObject y es responsable de enviar mensajes a objetos que pueden responder a estos mensajes. Es la clase base para todas las clases MFC que pueden realizar mapeo de mensajes.
Clase CWinApp Sólo hay un objeto de clase derivado de CWinApp en cualquier aplicación MFC, que representa el hilo principal que se ejecuta en el programa y la aplicación misma. En las aplicaciones SDK, la clase CWinApp reemplaza la función principal WinMain(). El trabajo realizado por la función WinMain() en aplicaciones SDK tradicionales ahora lo realizan las funciones miembro InitApplication(), InitInstance() y Run() de la clase CWinApp.
La clase CWnd se deriva directamente de la clase CCmdTarget, y las instancias de esta clase y sus clases derivadas son ventanas. La clase CWnd representa el objeto GUI más básico en MFC y también es una de las clases MFC más poderosas con la mayor cantidad de funciones miembro.
La clase CFrameWnd es una clase derivada de la clase CWnd. Se utiliza principalmente para el encabezado de la ventana y reemplaza la función de ventana WndProc() en las aplicaciones SDK.
La clase CDocument es la clase base de las clases de documentos de usuario en aplicaciones y representa archivos almacenados o abiertos por los usuarios.
La clase CView es una clase muy básica en MFC. Es la clase base para otras clases de vista de MFC y clases derivadas de vistas de usuario.
Ventana de visualización
Bucle de mensajes
}