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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.