Customisation de controles automatique ou application de theme perso (win 32)

Soyez le premier à donner votre avis sur cette source.

Vue 9 071 fois - Téléchargée 951 fois

Description

Bon c'est encore un projet en cours de developpement, ce sera une librairie permettant d'appliquer des themes perso sur des dialogs ou des fenetres en quelques commandes, la gestion des controles elle ne change pas, la librairie ne fera que changer les affichages.

Il n'est pas fini mais montre plusieurs techniques ( Ownerdraw, Customdraw , Subclassing , ....)

En fait j'ai deja fini ce projet mais sous forme de dll pour une application et j'avais obtenu le resultat suivant http://nsrn1.free.fr/Images/custom.jpeg et la le je recommence tout.

Ma petite fierté sont les bouttons yingyang, 2 bouttons entrelacés. Mais les graphismes sont pourris a cause des convertions DIB/pixel que je ne gere pas.

Elle gere au moins les formats d'images BMP JPG GIF.

Source / Exemple :


int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
	HWND hDlg;
	MSG msg;

	//pour les controles avancés
	InitCommonControls();

	//chargement du theme
	loadTheme("theme1\\theme.xml");

	//creation du dialog
	hDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),HWND_DESKTOP,(DLGPROC)MainProc);

	ShowWindow(hDlg,SW_SHOW);

	while(GetMessage(&msg,0,0,0)==TRUE)
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	//liberation de la memoire
	UnloadCustomDll();

	return 0;
}

LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)
{

	int Select;

	//traitement
	LRESULT res = traitement(Dlg,message,wParam,lParam);
	if (res) return res;

	switch(message)
	{

		case WM_INITDIALOG:{
			//le skin
			Customwin(Dlg);
			MakeScrooll(hlb);
		
			return true;
		}
		break;

	}

	return false;
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

SnOOpss
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

C'est bon normallement plus de problemes, mais j'ai pas eu le temps de faire tout ce que je voulait faire.

Pour le "X" c'est fait expres, en fait j'avais 2 possibilitées:
1 - Redessiner par dessus l'ancienne barre de titre ,mais dans ce cas taille fixe (pas moyen de changer l'epaisseur de la barre de titre)
2 - Tout refaire
Avec la deuxieme solution je vire la barre de titre et me refait la mienne comme je veut, rien ne m'empeche de me refaire un boutton "X" perso cf http://nsrn1.free.fr/Images/custom.jpeg
kzimir666
Messages postés
44
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
24 septembre 2006

J'ai oublié de dire que j'utilise VisualC++6.0...
Sinon dans le exe, la fenetre n'a pas de X pour fermer c'est normal ?
Merci pour ton travail :)
SnOOpss
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Je viens de trouver le probleme
1-probleme avec les manifest et VC2005
Project Properties->Configuration Properties->Mainfest Tool->Input and Output->Embed Manifest'. This is set to 'YES' by default.
mettre a "NO"
2-
//le skin
//Customwin(Dlg);
setIconBoutton(Dlg,IDC_BUTTON4,"theme1\\icone1.ico");
Il faut virer les deux // devant Customwin(Dlg);

Demain soir je fait une mise a jour, désolé.
SnOOpss
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Pour les problemes d'error LNK2001: unresolved external symbol il faut linker les libs msimg32.lib et Comctl32.lib.

Apres pour les chemins d'accés normallement il n'y a rien a changer il suffit d'appuyer sur "F5" avec VC++ 2005 Express sans deplacer aucun fichiers. En fait je ne gere pas les erreurs (par soucis de simplicité) mais la plupart des fonctions retournent 0 (ou false) en cas d'erreur il suffit de tracer en mode debug pour verifier.
SuperPat45
Messages postés
6
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
24 septembre 2006

Moi je l'ai compilé avec VC++ 2005 express sans aucune erreur ni warning,
mais si je lance le programme (compilé en mode debug) danc le répoertoire customwin le programmme ce lance mais rien ne ce skinne et en mode release, rien ne s'affiche....

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.