SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 25 sept. 2006 à 20:13
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és44Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention24 septembre 2006 24 sept. 2006 à 22:27
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és571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 24 sept. 2006 à 21:44
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és571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 24 sept. 2006 à 21:35
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és6Date d'inscriptionvendredi 26 novembre 2004StatutMembreDernière intervention24 septembre 2006 24 sept. 2006 à 18:57
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....
kzimir666
Messages postés44Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention24 septembre 2006 24 sept. 2006 à 16:00
Je n'arrive pas à compiler malheureusement :
Trackbar.obj : error LNK2001: unresolved external symbol __imp___TrackMouseEvent@4
boutton.obj : error LNK2001: unresolved external symbol __imp___TrackMouseEvent@4
Trackbar.obj : error LNK2001: unresolved external symbol __imp__TransparentBlt@44
boutton.obj : error LNK2001: unresolved external symbol __imp__TransparentBlt@44
fonction.obj : error LNK2001: unresolved external symbol __imp__TransparentBlt@44
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 24 sept. 2006 à 11:12
Ben pour le moment c'est juste une demo que je met ici pour avoir quelques remarques et conseils. Sinon oui si je la met ici c'est pour que les gens puissent s'en servir, il y a dedans pas mal de bout de code que j'ai trouvé egalement ici. Le projet final sera sous license GPL je pense.
Pour les commentaires, j'ai été legé je le reconnais mais je n'utilise que des apis de bases donc rien de bien complexe (sinon je peut expliquer la partie concernée ?).
Pour le franglais ca je vais le corriger, en fait je suis en train d'adapter un projet que j'ai commencé il y a au moins 1 an certains bout de code sont nouveaux d'autres ne sont que des c/c.
Pour utiliser le code, sans commentaires ni aide, c'est assez chaud. Dans la semaine je vais essayer de mettre la suite avec le loader xml, les scrollbars et les entetes GPL.
kzimir666
Messages postés44Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention24 septembre 2006 24 sept. 2006 à 00:37
Ca parrait vraiment bien et je trouve que le tout sans héritage est une bonne chose car ça permet en effet de créer des plugin pour des logiciels plus facilement.
Est-il possible d'utiliser ton code pour créer un plugin (gratuit bien évidemment) ? :)
Bravo à toi.
Petit Hic: Les sources sont peu commentées et il n'y a aucun topo pour montrer comment utiliser ton code. Sinon, le Franglais c'est pas top. ;)
Mais ce sont des broutilles.
SuperPat45
Messages postés6Date d'inscriptionvendredi 26 novembre 2004StatutMembreDernière intervention24 septembre 2006 18 sept. 2006 à 11:53
Voila qui est intéressant,
j'essaye justement de faire un plugin pour nsis permettant justement de skinner les contrôles.
Actuellement, j'arrive à skinner les boutons(Style XP off) et les scrollbars(NT only),
Ma question est:
Mon plugin étant sous licence zlib/libpng, puis-je utiliser quelques portions de ton code source pour mon plugin? (Ce serait bien que tu indique une licence pour ce code)
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 11 sept. 2006 à 20:00
Ben apres reflection l'heritage je laisse tomber.
J'ai a peine quelques variables a mettre en commun et les fonctions sont trop differentes. En fait je ne voit pas ce que ca pourrait m'apporter en performance et je trouve que de laisser comme ca c'est plus clair, si quelqu'un veut customiser juste un boutton (ce qu'on voit souvent sur ce forum) il lui suffit de jeter un coup d'oeuil dans boutton.cpp, tout est dedans il peut meme utliser le fichier seul.
Le coup du xml,j y avait jamais pensé mais il faut dire que mon premier projet etait une dll utlisable dans un environnement de script donc en fait elle ne donnait que des fonctions suplementaires et le codeur pouvait lui meme refaire son "loader xml".
La je corige les bugs, fini les controles que j'ai deja fait (combos,listview,...) et je m'attaque au loader c'est pas ce qui va me prendre le plus de temps.
Par contre MuPuf si tu es encore la, pour tes menus tu as utlisé quelles techniques ? En fait pour les items c'est bon ( via ownerdrawn) mais il m'est impossible de baisser ou modifier la menubar.
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 10 sept. 2006 à 21:31
Perso je trouve que la façon de gérer les skins et compliquée
Comme MuPuF, un fichier xml qui contient toutes les données, et juste un Load du fichier au démarrage et le tour est joué
Par contre j'ai oublié un delete dans mon code
Sorry
Et MuPuF y'a po de 'c' à Joky :)
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 10 sept. 2006 à 20:50
Hey hey, la mienne arrive pour gerer les skins, j'ai fais comme jocky a dit, héritage.
C'est un truc à mi-chemin avec les MFC, cad qu'on peut utiliser les fonctions win32 ou celles que j'ai créé. Et j'ai une escuse pour ça, c'est que je créé le skin à partir d'un xml.
Mais moi aussi je veux gerer les owner drawn, mais ce sera dans quelques temps, car j'ai d'autres choses qui attendent depuis trop longtemps.
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 10 sept. 2006 à 17:43
Ben en fait au contraire ce n'est pas une usine a gaz (enfin son utilisation). Il suffit de faire son dialog avec un editeur de ressource, faire son application avec les APIs classiques et rajouter quelques lignes d'initialisations.
En fait l utilité de la librairie c'est qu'on a pas a s'occuper du code qui gere les skins.
Il existe deja des librairies faisant ca mais toutes payantes.
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 10 sept. 2006 à 17:03
Oui me doute bien qu'il réinvente la roue mais bon s'il veut vraiment faire son truc, autant le faire bien.
Exemple pour les fonctions virtuelles
#include <windows.h>
class A
{
public:
virtual void f() { MessageBox(0, "Coucou je viens de A", 0, 0x40);};
};
class B : public A
{
public:
virtual void f() { MessageBox(0, "Coucou je viens de B", 0, 0x40);};
};
int main()
{
A a;
A *pa;
pa = new B();
pa->f(); //Affichera le message de B
return 0;
}
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 sept. 2006 à 16:57
JOKY > Ne pas perdre de vue que si c'est pour refaire une usine à gaz type MFC, inutile ça existe déjà et parfaitement testé.
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 10 sept. 2006 à 16:48
Oui, je n'ai pas encore exploité les classes du tout, j'ai juste commencé a les mettre en place pour eviter d'avoir encore tout a refaire.
En fait je m'en servirais dans les versions futures pour des controles speciaux comme faire une slidebar comme le volume dans certain lecteur de mp3 (un triangle dont la taille et la couleur augmente) mais pour le moment je n'ai pas pu trouver de fonctions a mettre en virtuelle.
Sinon je ne connaissais pas du tout l'heritage, vais voir de ce coté.
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 10 sept. 2006 à 16:23
DestroyWindow n'est bon que parceque tu utilises CreateDialog
Sinon il faut utiliser EndDialog
Je trouve aussi que tu n'utilises pas toutes les possibilités des classes
Tu aurais dû utiliser l'héritage par exemple une classe bouton avec pour héritier une classe CheckBox etc... et ainsi mettre en place des fonctions virtuelles et plein de chose comme ça
25 sept. 2006 à 20:13
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
24 sept. 2006 à 22:27
Sinon dans le exe, la fenetre n'a pas de X pour fermer c'est normal ?
Merci pour ton travail :)
24 sept. 2006 à 21:44
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é.
24 sept. 2006 à 21:35
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.
24 sept. 2006 à 18:57
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....
24 sept. 2006 à 16:00
Trackbar.obj : error LNK2001: unresolved external symbol __imp___TrackMouseEvent@4
boutton.obj : error LNK2001: unresolved external symbol __imp___TrackMouseEvent@4
Trackbar.obj : error LNK2001: unresolved external symbol __imp__TransparentBlt@44
boutton.obj : error LNK2001: unresolved external symbol __imp__TransparentBlt@44
fonction.obj : error LNK2001: unresolved external symbol __imp__TransparentBlt@44
24 sept. 2006 à 11:12
Pour les commentaires, j'ai été legé je le reconnais mais je n'utilise que des apis de bases donc rien de bien complexe (sinon je peut expliquer la partie concernée ?).
Pour le franglais ca je vais le corriger, en fait je suis en train d'adapter un projet que j'ai commencé il y a au moins 1 an certains bout de code sont nouveaux d'autres ne sont que des c/c.
Pour utiliser le code, sans commentaires ni aide, c'est assez chaud. Dans la semaine je vais essayer de mettre la suite avec le loader xml, les scrollbars et les entetes GPL.
24 sept. 2006 à 00:37
Est-il possible d'utiliser ton code pour créer un plugin (gratuit bien évidemment) ? :)
Bravo à toi.
Petit Hic: Les sources sont peu commentées et il n'y a aucun topo pour montrer comment utiliser ton code. Sinon, le Franglais c'est pas top. ;)
Mais ce sont des broutilles.
18 sept. 2006 à 11:53
j'essaye justement de faire un plugin pour nsis permettant justement de skinner les contrôles.
Actuellement, j'arrive à skinner les boutons(Style XP off) et les scrollbars(NT only),
http://ultramodernui.sourceforge.net/
Ma question est:
Mon plugin étant sous licence zlib/libpng, puis-je utiliser quelques portions de ton code source pour mon plugin? (Ce serait bien que tu indique une licence pour ce code)
11 sept. 2006 à 20:00
J'ai a peine quelques variables a mettre en commun et les fonctions sont trop differentes. En fait je ne voit pas ce que ca pourrait m'apporter en performance et je trouve que de laisser comme ca c'est plus clair, si quelqu'un veut customiser juste un boutton (ce qu'on voit souvent sur ce forum) il lui suffit de jeter un coup d'oeuil dans boutton.cpp, tout est dedans il peut meme utliser le fichier seul.
Le coup du xml,j y avait jamais pensé mais il faut dire que mon premier projet etait une dll utlisable dans un environnement de script donc en fait elle ne donnait que des fonctions suplementaires et le codeur pouvait lui meme refaire son "loader xml".
La je corige les bugs, fini les controles que j'ai deja fait (combos,listview,...) et je m'attaque au loader c'est pas ce qui va me prendre le plus de temps.
Par contre MuPuf si tu es encore la, pour tes menus tu as utlisé quelles techniques ? En fait pour les items c'est bon ( via ownerdrawn) mais il m'est impossible de baisser ou modifier la menubar.
10 sept. 2006 à 21:31
Comme MuPuF, un fichier xml qui contient toutes les données, et juste un Load du fichier au démarrage et le tour est joué
Par contre j'ai oublié un delete dans mon code
Sorry
Et MuPuF y'a po de 'c' à Joky :)
10 sept. 2006 à 20:50
C'est un truc à mi-chemin avec les MFC, cad qu'on peut utiliser les fonctions win32 ou celles que j'ai créé. Et j'ai une escuse pour ça, c'est que je créé le skin à partir d'un xml.
Mais moi aussi je veux gerer les owner drawn, mais ce sera dans quelques temps, car j'ai d'autres choses qui attendent depuis trop longtemps.
10 sept. 2006 à 17:43
En fait l utilité de la librairie c'est qu'on a pas a s'occuper du code qui gere les skins.
Il existe deja des librairies faisant ca mais toutes payantes.
10 sept. 2006 à 17:03
Exemple pour les fonctions virtuelles
#include <windows.h>
class A
{
public:
virtual void f() { MessageBox(0, "Coucou je viens de A", 0, 0x40);};
};
class B : public A
{
public:
virtual void f() { MessageBox(0, "Coucou je viens de B", 0, 0x40);};
};
int main()
{
A a;
A *pa;
pa = new B();
pa->f(); //Affichera le message de B
return 0;
}
10 sept. 2006 à 16:57
10 sept. 2006 à 16:48
En fait je m'en servirais dans les versions futures pour des controles speciaux comme faire une slidebar comme le volume dans certain lecteur de mp3 (un triangle dont la taille et la couleur augmente) mais pour le moment je n'ai pas pu trouver de fonctions a mettre en virtuelle.
Sinon je ne connaissais pas du tout l'heritage, vais voir de ce coté.
10 sept. 2006 à 16:23
Sinon il faut utiliser EndDialog
Je trouve aussi que tu n'utilises pas toutes les possibilités des classes
Tu aurais dû utiliser l'héritage par exemple une classe bouton avec pour héritier une classe CheckBox etc... et ainsi mettre en place des fonctions virtuelles et plein de chose comme ça
Fin bref, quelques truc à revoir