Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interface Utilisateur Google Talk

12 réponses
Avatar
Cyrille Szymanski
Bonjour à tous,

je cherche à faire un peu de reverse engineering sur GoogleTalk dont je
trouve l'interface utilisateur de toute beauté. J'ai déjà tenté plusieurs
fois de créer mes propres contrôles dessinés main, mais j'ai vite
abandonné tellement c'est fastidieux. Peut-être que je m'y prenais mal...

Quel est l'état de l'art pour faire ce genre de chose aujourd'hui sans se
casser les dents ?



Quelques infos sur GoogleTalk :

A part l'utilisation de RICHED20.DLL, je n'ai pas trouvé grand chose de
spécial. L'application est composée d'un seul fichier googletalk.exe

Les bitmaps représentant les contrôles dans tous leurs états (normal,
appuyé, rollover...) sont en resource. En resource aussi les boîtes de
dialogue qui s'affichent sans thème particulier. Une exception : la
fenêtre de login. Les champs de saisie utilisent le style ES_LEFT |
ES_PASSWORD | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP ce qui n'est pas choquant.

La manifest indique qu'il faut utiliser les Common Controls version 6.

les contrôles ont l'air plutôt standard. Les noms de classe ne trahissent
pas grand chose : "ChatTitle", "Chat View" "Chat Link Bar", "Contact List
View", à part "RichEdit20W" bien sûr...

Conclusion : c'est apparemment tout fait à la main. Ouille la galère !
Pour moi ça représente un travail énorme. Il doit bien y avoir une
solution plus simple non ?

Avez-vous une idée de la façon dont cette appli a été programmée ?


Merci.
--
Cyrille Szymanski

10 réponses

1 2
Avatar
Paul Bacelar
Le reverse engineering n'est pas autorisé en Europe et n'est toléré que pour
des motifs de compatibilité si le produit retro engineeré a plus de 5 ans.

(A moins que la législation ait changé récemment ?)
--
Paul Bacelar

"Cyrille Szymanski" wrote in message
news:
Bonjour à tous,

je cherche à faire un peu de reverse engineering sur GoogleTalk dont je
trouve l'interface utilisateur de toute beauté. J'ai déjà tenté plusieurs
fois de créer mes propres contrôles dessinés main, mais j'ai vite
abandonné tellement c'est fastidieux. Peut-être que je m'y prenais mal...

Quel est l'état de l'art pour faire ce genre de chose aujourd'hui sans se
casser les dents ?



Quelques infos sur GoogleTalk :

A part l'utilisation de RICHED20.DLL, je n'ai pas trouvé grand chose de
spécial. L'application est composée d'un seul fichier googletalk.exe

Les bitmaps représentant les contrôles dans tous leurs états (normal,
appuyé, rollover...) sont en resource. En resource aussi les boîtes de
dialogue qui s'affichent sans thème particulier. Une exception : la
fenêtre de login. Les champs de saisie utilisent le style ES_LEFT |
ES_PASSWORD | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_TABSTOP ce qui n'est pas choquant.

La manifest indique qu'il faut utiliser les Common Controls version 6.

les contrôles ont l'air plutôt standard. Les noms de classe ne trahissent
pas grand chose : "ChatTitle", "Chat View" "Chat Link Bar", "Contact List
View", à part "RichEdit20W" bien sûr...

Conclusion : c'est apparemment tout fait à la main. Ouille la galère !
Pour moi ça représente un travail énorme. Il doit bien y avoir une
solution plus simple non ?

Avez-vous une idée de la façon dont cette appli a été programmée ?


Merci.
--
Cyrille Szymanski


Avatar
Arnold McDonald \(AMcD\)
>Conclusion : c'est apparemment tout fait à la main. Ouille la galère !
Pour moi ça représente un travail énorme. Il doit bien y avoir une
solution plus simple non ?



Ben quand tu veux faire du perso, il n'y a pas 150 solutions, reécrire tes
propres composants à la main ! Détourner ou sous-classer les composants
Windows, c'est une perte de temps, tu vas tomber sur 50 cas particuliers,
des incompatibilités entre systèmes d'exploitation, DLLs système installées,
etc.

De plus les composants Windows sont souvent très lourds, truffés de messages
dont tu n'as que faire et ainsi de suite. Qui plus est, à la base, dès que
tu veux un truc original, ils ne sont pas prévus pour... Tu as bien plus
vite fait de créer les tiens ! Pour cela, le truc le plus rapide et
classique est de passer par des bitmaps bien sûr, redessiner les contrôles à
chaque WM_PAINT ça peut-être très lourd en overhead. Pour les trucs pénibles
ou compliqués, je te conseille vivement le double-buffering d'ailleurs...

Ya V. Burel qui a passé pas mal de temps à faire les siens de composants, il
pourra te donner des tuyaux, mais en gros, c'est du boulot, beaucoup de
boulot. Un simple contrôle bouton perso, avec gestion du bitmap dessus,
différenes fontes, quelques effets d'ombres, différents états, etc, t'as
vite tes 1.000-1.500 lignes de C.


--
Arnold McDonald (AMcD) - Help #15 /2006

http://arnold.mcdonald.free.fr/
Avatar
Remi THOMAS
"Cyrille Szymanski" écrivit
Bonjour à tous,

je cherche à faire un peu de reverse engineering sur GoogleTalk dont je
trouve l'interface utilisateur de toute beauté. J'ai déjà tenté plusieurs
fois de créer mes propres contrôles dessinés main, mais j'ai vite
abandonné tellement c'est fastidieux. Peut-être que je m'y prenais mal...

Quel est l'état de l'art pour faire ce genre de chose aujourd'hui sans se
casser les dents ?





Bonjour,

C'est effectivement assez long à faire.
Pourquoi ne pas le faire en flash?
http://www.macromedia.com/devnet/flash/articles/stock_history.html
http://www.globfx.com/

L'avenir serait WinFX ?

Rémi
Avatar
Bertrand Lenoir-Welter
Arnold McDonald (AMcD) :

Un simple contrôle bouton perso, avec gestion du bitmap dessus,
différenes fontes, quelques effets d'ombres, différents états, etc, t'as
vite tes 1.000-1.500 lignes de C.



Hmm. A mon avis, on passe plus de temps à dessiner les bitmaps des
différents états qu'à en programmer la gestion. Et si c'est du graphisme
vectoriel, genre les boutons grandissent en même temps que la fenêtre,
avec changement de taille selon la résolution pour pas faire de trop
petits boutons, etc., alors là oui ça devient vraiment galère.
Avatar
Arnold McDonald \(AMcD\)
Bertrand Lenoir-Welter wrote:

Hmm. A mon avis, on passe plus de temps à dessiner les bitmaps des
différents états qu'à en programmer la gestion.



Oui, bien sûr, la gestion "basique" n'est pas compliquée. Dans ma tête, je
pensais par exemple au custom des barres de titres, au redimensionnements,
aux correspondances en fonction de la taille de texte du système de
l'utilisateur, etc. C'est cela qui prend un temps considérable et qui fait
enfler ton nombre de lignes. En théorie, il faut que tes composants se
comportent comme ceux de Windows, au moins dans les grandes lignes. Parce
qu'après, niveau logique, c'est évidemment simple, quelques messages à
prendre en compte seulement, ceux que tu as uniquement besoin d'ailleurs
(l'avantage de coder ses composants persos).

Sinon, on a oublié quelques liens.

Dand les bouquins, il y a l'inévitable Petzold, chapitre 8 dans ma version,
9 dans la 5e, où il montre les bases de la programmation de fenêtres enfants
personnalisées.

On trouve pas mal de tutos sur le Web, beaucoup de daubes, mais certains
très très bien faits, en voici un d'excellent amha car simple et complet :

http://www.catch22.net/tuts/custctrl.asp

D'ailleurs, le site en entier est excellent.

Dans le MSDN on trouve aussi des références sur le custom à la Microsoft en
utilisant custom draw, qui permet, à partir de certaines versions de Windows
(vaut d'ailleurs mieux avoir XP) de customiser l'apparence de certains
contrôles. C'est assez lourd mais bon, ça peut suffire à certains.

Rappelons que pour des modifs simples, on peut aussi sous-classer un
contrôle tout simplement. Perso, pour de petits trucs, je fais encore plus
simple, j'utilise un contrôle static dont je gère le dessin en ownerdraw via
le message WM_DRAWITEM.

Bref, ce ne sont pas les techniques qui manquent :-).

--
Arnold McDonald (AMcD) - Help #16 /2006

http://arnold.mcdonald.free.fr/
Avatar
Cyrille Szymanski
"Remi THOMAS" wrote in news:43e863f2$0$26590
$:

C'est effectivement assez long … faire.
Pourquoi ne pas le faire en flash?




On commence à en trouver pas mal des GUI écrites en HTML (il n'y a qu'à
regarder VS.Net), c'est pas idiot en fait.

--
Cyrille Szymanski
Avatar
Cyrille Szymanski
"Arnold McDonald (AMcD)" wrote in
news:43e89aeb$0$385$:

Dand les bouquins, il y a l'inévitable Petzold, chapitre 8 dans ma
version, 9 dans la 5e, où il montre les bases de la programmation de
fenêtres enfants personnalisées.

http://www.catch22.net/tuts/custctrl.asp



Le site est vraiment bien. C'est les techniques classiques bourrines qu'il
décrit (certes bien expliquées), je suis à la recherche d'une solution plus
élégante, plus simple à maintenir.

Dans le MSDN on trouve aussi des références sur le custom à la
Microsoft en utilisant custom draw



Ok je vais voir ça.

Je pense que je vais opter pour une IHM à base de HTML même si j'aime pas
beaucoup l'interface IWebBrowser, j'espère que j'arriverai à intercepter les
événements qui m'intéressent sans trop de douleur.

--
Cyrille Szymanski
Avatar
Bertrand Lenoir-Welter
Arnold McDonald (AMcD) :

Perso, pour de petits trucs, je fais encore plus simple, j'utilise un
contrôle static dont je gère le dessin en ownerdraw via le message
WM_DRAWITEM.



Ben dis donc, moi qui croyais être le seul au monde à faire comme ça...

En fait, dès que j'ai besoin de faire du graphisme vectoriel ou
dynamique dans une boîte de dialogue, je crée un static dans lequel je
crée le DC ad hoc, et je chope le WM_PAINT de la boîte, plus parfois les
WM_SETFOCUS & WM_KILLFOCUS, plus la souris si nécessaire.

Simple et efficace. En tout cas pour moi.
Avatar
Arnold McDonald \(AMcD\)
Bertrand Lenoir-Welter wrote:

Ben dis donc, moi qui croyais être le seul au monde à faire comme
ça...



C'est quand même technique très facile à mettre en oeuvre. D'ailleurs, amha,
les statics ont été créés pour ça.

Simple et efficace. En tout cas pour moi.



C'est clair, c'est bien moins long à faire qu'un contrôle perso et facile à
faire.

--
Arnold McDonald (AMcD)

http://arnold.mcdonald.free.fr/
Avatar
Bertrand Lenoir-Welter
Arnold McDonald (AMcD) :

http://www.catch22.net/tuts



Excellent site, au fait. Les tutoriels sont vraiment bien fichus,
proprement expliqués. Pas de doute, c'est de la belle ouvrage. Je me
permets même de suggérer que ce lien soit ajouté dans la FAQ, et bien
que ce soit en Anglais. Ca regorge de petits trucs sympas et utiles.

T'en as d'autres comme ça ?
1 2