Probl�me d'encapsulation des MFCs
Bonjour,
Dans le cadre d'un de mes projets, je vais �tre amen� � utiliser les MFCs. Je souhaite d'abord les encapsuler dans des classes g�n�riques de ma conception afin de pouvoir proposer proprement et simplement d'autres impl�mentations avec des APIs diff�rentes si le besoin s'en fait sentir (comme le fait la SFML par exemple pour les diff�rents syst�mes qu'elle supporte, une m�me interface pour les impl�mentations Win/Mac/Unix).
Je me demande si les MFCs sont l'id�al pour �a. En effet, il s'agit d�j� d'une encapsulation de l'API Win32, et son architecture m'impose de nombreuses contraintes qui les rendent difficiles � impl�menter sous une interface g�n�rique (� cause des relations entres les diverses classes qui les composent entre autres). Mon plus gros probl�me est que les MFCs imposent d'utiliser une instance d�riv�e de la classe CWinAppEx, qui sert alors de point d'entr�e au programme. J'ai donc encapsul� cette classe elle aussi, mais �a ne fonctionne pas car pour respecter le sch�ma usuel des MFCs, il faudrait que je d�clare une instance de CWinAppEx dans mon programme, en dehors de mon encapsulation, ce que je ne peux faire. En effet, je ne veux pas qu'il y ait du code MFC dans mon programme, ce code doit imp�rativement �tre isol� dans une librairie � part r�serv�e aux MFCs. Si je cr�� cette instance dans ma libraire MFC, j'ai droit � un "error LNK1561: entry point must be defined" � la compilation, et si j'utilise mon propre main dans le programme principal, je me tape une exception.
Y a t-il un moyen de contourner ce probl�me? Ou devrais-je plut�t envisager d'encapsuler l'API Win32 directement au lieu des MFCs?
Autre petite question qui n'a rien � voir, mais que je me permet de poser quand m�me car je ne vais pas ouvrir un nouveau topic pour si peu, quel est le nom exact d'une structure de donn�e statique de ce genre en c++? N'y a t-il pas un moyen plus propre en C++ d'�crire ce genre de chose?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| struct Param
{
const std::wstring section;
const std::wstring entry;
const std::wstring value;
};
static Param param_array[] =
{
{ L"Display", L"ResX", L"1680" },
{ L"Display", L"ResY", L"1050" },
{ L"Display", L"BitDepth", L"32" },
{ L"", L"", L"" },
}; |
Merci d'avance.