Bipcpp - fenêtre,dialog,menu inter-actifs

Soyez le premier à donner votre avis sur cette source.

Vue 5 987 fois - Téléchargée 574 fois

Description

BipCPP est un projet open source qui a pour but de simplifier la programmation sous windows. Il contient des fonctions pour gérer les fenêtres, les formulaires (dialogbox), les menus ... Il est développé en C++, api32 et STL.

Une grosse mise à jour de BipCPP.
Gestion simplifié des formulaires (DialogBox) et des menus avec plein de paramètres (voir le source).
Au menu :
- menu dynamique et inter-actif
- formulaire modal ou non, dynamique et inter-actif
- champs static, bouton, edit, checkbox, ... (ownerdraw pour certain)
- nombreux attributs des champs (couleur du texte, du fond, bordure, activé, visible, police, ...)
- gestion automatique des champs obligatoire (not null)
- gestion automatique des champs date et nombre (avec format en entrée et sortie)
- interception des messages système (+ajout du message "champ modifié")
- touche entrée pour passer au champ suivant (comme la touche tab)
- ...
- tout cela dans des formulaires dynamique (les champs sont créés lors de l'ouverture du formulaire)
- les champs des formulaires sont dynamiques (les attributs sont modifiables en temps réel par programmation)

Source / Exemple :


Exemple de code pour afficher le formulaire nommé "STATIC" qui est visible dans la capture d'écran :
- création des champs avec BG_FormItemAdd
- création du formulaire avec BG_FormCreate

//-------------------------------------------------------------
//!        Affichage du formulaire Static                     !
//-------------------------------------------------------------
void Form_Static (void)
{
	int iItem;
	int iError;

	// initialisation numero de l'item
	iItem = 1;

	// création du titre
	iError = BG_FormItemAdd ("static", "titre", BG_ITEM_STATIC, iItem++, 50, 10, 600, 40,
				"value=Démonstrateur Formulaire BipGDI (static);txhpos=center;txvpos=center;ftname=Arial;ftsize=16;ftbold=true;brdsize=1;brdcol=blue");
	iError = BG_FormItemAdd ("static", "rectangle1", BG_ITEM_RECT, iItem++, 50, 60, 600, 370,
				"brdsize=1;brdstyle=3DOUT");

	iError = BG_FormItemAdd ("static", "static1", BG_ITEM_STATIC, iItem++, 140, 65, 400, 50,
				"value=Exemple de champ static;brdsize=1;bkcol=white;ftname=Arial;ftsize=10");

	iError = BG_FormItemAdd ("static", "police", BG_ITEM_STATIC, iItem++, 60, 120, 180, 25,
				"value=Police;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbpolice", BG_ITEM_COMBOSYS, iItem++, 180, 120, 160, 100,
				"value1=Arial;value2=Courier New;value3=Times New Roman;remark=Police du champ STATIC");

	iError = BG_FormItemAdd ("static", "taille", BG_ITEM_STATIC, iItem++, 360, 120, 130, 25,
				"value=Taille;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbtaille", BG_ITEM_COMBOSYS, iItem++, 500, 120, 50, 100,
				"value1=10;value2=6;value3=8;value4=12;value5=14;value6=18;value7=24;value8=36;value9=72;remark=Taille de la police de caractère");

	iError = BG_FormItemAdd ("static", "grastexte", BG_ITEM_STATIC, iItem++, 60, 150, 180, 25,
				"value=Gras;txvpos=center");
	iError = BG_FormItemAdd ("static", "gras", BG_ITEM_CHECKSYS, iItem++, 180, 155, 100, 100,
				"remark=Validez pour mettre le texte en gras");

	iError = BG_FormItemAdd ("static", "italiquetexte", BG_ITEM_STATIC, iItem++, 260, 150, 180, 25,
				"value=Italique;txvpos=center");
	iError = BG_FormItemAdd ("static", "italique", BG_ITEM_CHECKSYS, iItem++, 340, 155, 100, 100,
				"remark=Validez pour mettre le texte en italique");

	iError = BG_FormItemAdd ("static", "soulignetexte", BG_ITEM_STATIC, iItem++, 460, 150, 180, 25,
				"value=Souligné;txvpos=center");
	iError = BG_FormItemAdd ("static", "souligne", BG_ITEM_CHECKSYS, iItem++, 540, 155, 100, 100,
				"remark=Validez pour mettre le texte en souligné");

	iError = BG_FormItemAdd ("static", "couleurtexte", BG_ITEM_STATIC, iItem++, 60, 180, 180, 25,
				"value=Couleur du texte;txvpos=center;txcol=blue");
	iError = BG_FormItemAdd ("static", "cbcouleurtexte", BG_ITEM_COMBOSYS, iItem++, 180, 180, 100, 100,
				"value1=BLACK;value2=WHITE;value3=RED;value4=BLUE;value5=GREEN;value6=YELLOW;value7=MAGENTA;value8=CYAN;value9=MAGENTA;value10=LIGHTGREY;value11=DARKGREY;remark=Couleur du texte du champ STATIC");

	iError = BG_FormItemAdd ("static", "couleurfond", BG_ITEM_STATIC, iItem++, 360, 180, 130, 25,
				"value=Couleur du fond;txvpos=center;txcol=white;bkcol=grey");
	iError = BG_FormItemAdd ("static", "cbcouleurfond", BG_ITEM_COMBOSYS, iItem++, 500, 180, 100, 100,
				"value1=WHITE;value2=BLACK;value3=RED;value4=BLUE;value5=GREEN;value6=YELLOW;value7=MAGENTA;value8=CYAN;value9=MAGENTA;value10=LIGHTGREY;value11=GREY;value12=DARKGREY;value13=-1;remark=Couleur du fond du champ STATIC");

	iError = BG_FormItemAdd ("static", "horizalign", BG_ITEM_STATIC, iItem++, 60, 210, 130, 25,
				"value=Alignement horiz.;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbhorizalign", BG_ITEM_COMBOSYS, iItem++, 180, 210, 100, 100,
				"value1=LEFT;value2=CENTER;value3=RIGHT;remark=Alignement horizontal du texte du champ STATIC");

	iError = BG_FormItemAdd ("static", "verticalign", BG_ITEM_STATIC, iItem++, 360, 210, 130, 25,
				"value=Alignement vertic.;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbverticalign", BG_ITEM_COMBOSYS, iItem++, 500, 210, 100, 100,
				"value1=TOP;value2=CENTER;value3=BOTTOM;remark=Alignement vertical du texte du champ STATIC");

	iError = BG_FormItemAdd ("static", "taillebrd", BG_ITEM_STATIC, iItem++, 60, 240, 180, 25,
				"value=Taille bordure;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbtaillebrd", BG_ITEM_COMBOSYS, iItem++, 180, 240, 50, 100,
				"value1=1;value2=0;value3=2;value4=3;value5=4;value6=5;value7=6;value8=8;value9=10;value10=12;value11=16;remark=Taille de la bordure");

	iError = BG_FormItemAdd ("static", "couleurbrd", BG_ITEM_STATIC, iItem++, 360, 240, 130, 25,
				"value=Couleur bordure;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbcouleurbrd", BG_ITEM_COMBOSYS, iItem++, 500, 240, 100, 100,
				"value1=BLACK;value2=WHITE;value3=RED;value4=BLUE;value5=GREEN;value6=YELLOW;value7=MAGENTA;value8=CYAN;value9=MAGENTA;value10=LIGHTGREY;value11=DARKGREY;remark=Couleur de la bordure");

	iError = BG_FormItemAdd ("static", "stylebrd", BG_ITEM_STATIC, iItem++, 60, 270, 130, 25,
				"value=Style bordure;txvpos=center");
	iError = BG_FormItemAdd ("static", "cbstylebrd", BG_ITEM_COMBOSYS, iItem++, 180, 270, 100, 100,
				"value1=SOLID;value2=3DOUT;value3=3DIN;remark=Style de la bordure");

	// création d'un champ de saisie simple et de son texte
	iError = BG_FormItemAdd ("static", "textetexte", BG_ITEM_STATIC, iItem++, 60, 360, 180, 25,
				"value=Texte du static :;txvpos=center");
	iError = BG_FormItemAdd ("static", "texte", BG_ITEM_EDIT, iItem++, 180, 360, 400, 25, 
				"value=Exemple de champ static;remark=Texte affiché dans le static");

	// bouton FERMER
	iError = BG_FormItemAdd ("static", "fermer", BG_ITEM_BUTTON, iItem++, 280, 440, 100, 30,
				"button=ok;value=Fermer;txcol=white;bkcol=red;remark=Ferme le formulaire");

	// affichage du formulaire
	iError = BG_FormCreate ("static", "modal=true;bkcol=lightgrey", 10, 10, 700, 500, Form_Static_Proc);

	// fermeture du formulaire
	iError = BG_FormClose ("static");

}

Conclusion :


Les commentaires, remarques et aide sont les bienvenus.

Les sources et exe montrés dans la capture d'écran sont ici :
- mini-calculatrice : http://bipcpp.free.fr/fr/bipgdi/BipCalc-v100.zip
- démonstrateur de formulaire : http://bipcpp.free.fr/fr/bipgdi/demoform-v100.zip
- démonstrateur de menu : http://bipcpp.free.fr/fr/bipgdi/demomenu-v100.zip

La documentation de toutes les fonctions est disponible sur mon site Web.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
40
Date d'inscription
mardi 18 mai 2004
Statut
Membre
Dernière intervention
2 mai 2010

>> C'est impressionnant a quel point la programmation Win32 devient facile

C'est bien le but de ce projet, passer plus de temps sur le code et moins sur les dialogs.


>>on pourrait reprocher la non portabilité de la chose

S'il y a des volontaires pour aider au portage sur Linux, je suis preneur.
Messages postés
173
Date d'inscription
jeudi 20 décembre 2001
Statut
Membre
Dernière intervention
22 août 2008

O_O
C'est impressionnant a quel point la programmation Win32 devient facile, tout l'aspect initialisation/autres trucs lourds disparaissent pour laisser juste la gestion du programme...
Bon comme d'hab on pourrait reprocher la non portabilité de la chose, mais je trouve que c'est quand même vraiment bien. Et pour beaucoup de developpeurs, ca permet de coder une interface en qques lignes sans avoir a ajouter de .lib ou de dll qui emmerdent toujours tout le monde.
Bref.... Bravo.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.