http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
[...] si j'ai fais des bourdes [...]
http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
[...] si j'ai fais des bourdes [...]
http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
[...] si j'ai fais des bourdes [...]
Le 13/03/2008 12:17, Vincent Burel a écrit :
>
> http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
>
> [...] si j'ai fais des bourdes [...]
<cit.>
<A HREF="http:www.charlespetzold.com" TARGET=_new>Charles Petzold</A>
<A HREF="http:www.msdn.com" TARGET=_new>
</cit.>
Remplacer les « » par des « // » (il y en a peut-être d'autres dans
la page, mais ce sont ceux sur lesquels j'ai essayé de cliquer sans
succès). Et personnellement je virerais aussi les attributs TARGET.
Le 13/03/2008 12:17, Vincent Burel a écrit :
>
> http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
>
> [...] si j'ai fais des bourdes [...]
<cit.>
<A HREF="http:\www.charlespetzold.com" TARGET=_new>Charles Petzold</A>
<A HREF="http:\www.msdn.com" TARGET=_new>
</cit.>
Remplacer les « \ » par des « // » (il y en a peut-être d'autres dans
la page, mais ce sont ceux sur lesquels j'ai essayé de cliquer sans
succès). Et personnellement je virerais aussi les attributs TARGET.
Le 13/03/2008 12:17, Vincent Burel a écrit :
>
> http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
>
> [...] si j'ai fais des bourdes [...]
<cit.>
<A HREF="http:www.charlespetzold.com" TARGET=_new>Charles Petzold</A>
<A HREF="http:www.msdn.com" TARGET=_new>
</cit.>
Remplacer les « » par des « // » (il y en a peut-être d'autres dans
la page, mais ce sont ceux sur lesquels j'ai essayé de cliquer sans
succès). Et personnellement je virerais aussi les attributs TARGET.
Remplacer les « » par des « // »
d'accord c'est corrigé. merci.
Remplacer les « \ » par des « // »
d'accord c'est corrigé. merci.
Remplacer les « » par des « // »
d'accord c'est corrigé. merci.
hello,
Bon, ben, puisque je me suis proposé de le faire, voila une première page
pour un tutorial d'apprentissage de la programmation sous windows en 'C'.
http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
hello,
Bon, ben, puisque je me suis proposé de le faire, voila une première page
pour un tutorial d'apprentissage de la programmation sous windows en 'C'.
http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
hello,
Bon, ben, puisque je me suis proposé de le faire, voila une première page
pour un tutorial d'apprentissage de la programmation sous windows en 'C'.
http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
Vincent Burel wrote on 13/03/2008 12:17:
> hello,
>
> Bon, ben, puisque je me suis proposé de le faire, voila une première
> pour un tutorial d'apprentissage de la programmation sous windows en
> http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
- dessiner dans une window frame est une mauvaise idée.
vous pouvez limiter le contenu à ce qui présenté ici mais
conclure que le rendu du texte "This Text Is always displayed"
n'est pas agréable / acceptable et qu'un child spécialisé
pour l'affichage des infos et occupant l'espace client du
frame est requis (et Cf cours suivant).
- "#include "minprg.h" ne sert sûrement à rien (les fonctions
de minprg.c n'ont pas besoin d'êre exportées) - vous ne
fournissez pas ce fichier s'il existe.
- évitez la redondance et la recopie inutile de string
d'interface, par exemple:
char message[512];
strcpy(message,"Do you Want To Close This Application ?");
rep=MessageBox(hw, message, titre,
MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
se code (toute chose égale par ailleurs):
rep=MessageBox(hw, "Do you Want To Close This Application ?",
titre, MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
le recours à un buffer char local n'a de sens que si vous
chargiez une ressource string (éventuellement localisée).
eg:
char message[512];
if (LoadString(G_hinstance, IDS_CONFIRMCLOSE, message, 512) == 0)
strcpy(message,"Do you Want To Close This Application ?");
rep=MessageBox(hw, message, titre,
MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
(ayant défini IDS_CONFIRMCLOSE en resource évidemment).
cetet gestion via ressource de tous éléments localisables
est de fait une bonne habitude à prendre très tôt.
- le 2nd parametre de'un méthode de traitement des messages
n'est pas un "event type" mais un identifiant (unique) de
messages - d'autres GUI utilise des events types (MacOS)
par exemple; on distinguera alors selon ces types puis selon
le message effectif appartenant à ce type; windows est plus
primaire et donne ici le message lui-même; les évolutions
de windows se sont accomodées de ce manque de distinction
via les messages de notification et des structures variées.
- le test "if (G_hwnd_MainWindow==NULL) return 0;" avant
la loop detraitement des msg est inutile (fait 3 lignes
avant).
Vincent Burel wrote on 13/03/2008 12:17:
> hello,
>
> Bon, ben, puisque je me suis proposé de le faire, voila une première
> pour un tutorial d'apprentissage de la programmation sous windows en
> http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
- dessiner dans une window frame est une mauvaise idée.
vous pouvez limiter le contenu à ce qui présenté ici mais
conclure que le rendu du texte "This Text Is always displayed"
n'est pas agréable / acceptable et qu'un child spécialisé
pour l'affichage des infos et occupant l'espace client du
frame est requis (et Cf cours suivant).
- "#include "minprg.h" ne sert sûrement à rien (les fonctions
de minprg.c n'ont pas besoin d'êre exportées) - vous ne
fournissez pas ce fichier s'il existe.
- évitez la redondance et la recopie inutile de string
d'interface, par exemple:
char message[512];
strcpy(message,"Do you Want To Close This Application ?");
rep=MessageBox(hw, message, titre,
MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
se code (toute chose égale par ailleurs):
rep=MessageBox(hw, "Do you Want To Close This Application ?",
titre, MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
le recours à un buffer char local n'a de sens que si vous
chargiez une ressource string (éventuellement localisée).
eg:
char message[512];
if (LoadString(G_hinstance, IDS_CONFIRMCLOSE, message, 512) == 0)
strcpy(message,"Do you Want To Close This Application ?");
rep=MessageBox(hw, message, titre,
MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
(ayant défini IDS_CONFIRMCLOSE en resource évidemment).
cetet gestion via ressource de tous éléments localisables
est de fait une bonne habitude à prendre très tôt.
- le 2nd parametre de'un méthode de traitement des messages
n'est pas un "event type" mais un identifiant (unique) de
messages - d'autres GUI utilise des events types (MacOS)
par exemple; on distinguera alors selon ces types puis selon
le message effectif appartenant à ce type; windows est plus
primaire et donne ici le message lui-même; les évolutions
de windows se sont accomodées de ce manque de distinction
via les messages de notification et des structures variées.
- le test "if (G_hwnd_MainWindow==NULL) return 0;" avant
la loop detraitement des msg est inutile (fait 3 lignes
avant).
Vincent Burel wrote on 13/03/2008 12:17:
> hello,
>
> Bon, ben, puisque je me suis proposé de le faire, voila une première
> pour un tutorial d'apprentissage de la programmation sous windows en
> http://pagesperso-orange.fr/vb-audio/fr/pub/programming/index.htm
- dessiner dans une window frame est une mauvaise idée.
vous pouvez limiter le contenu à ce qui présenté ici mais
conclure que le rendu du texte "This Text Is always displayed"
n'est pas agréable / acceptable et qu'un child spécialisé
pour l'affichage des infos et occupant l'espace client du
frame est requis (et Cf cours suivant).
- "#include "minprg.h" ne sert sûrement à rien (les fonctions
de minprg.c n'ont pas besoin d'êre exportées) - vous ne
fournissez pas ce fichier s'il existe.
- évitez la redondance et la recopie inutile de string
d'interface, par exemple:
char message[512];
strcpy(message,"Do you Want To Close This Application ?");
rep=MessageBox(hw, message, titre,
MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
se code (toute chose égale par ailleurs):
rep=MessageBox(hw, "Do you Want To Close This Application ?",
titre, MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
le recours à un buffer char local n'a de sens que si vous
chargiez une ressource string (éventuellement localisée).
eg:
char message[512];
if (LoadString(G_hinstance, IDS_CONFIRMCLOSE, message, 512) == 0)
strcpy(message,"Do you Want To Close This Application ?");
rep=MessageBox(hw, message, titre,
MB_APPLMODAL | MB_YESNO | MB_ICONQUESTION);
(ayant défini IDS_CONFIRMCLOSE en resource évidemment).
cetet gestion via ressource de tous éléments localisables
est de fait une bonne habitude à prendre très tôt.
- le 2nd parametre de'un méthode de traitement des messages
n'est pas un "event type" mais un identifiant (unique) de
messages - d'autres GUI utilise des events types (MacOS)
par exemple; on distinguera alors selon ces types puis selon
le message effectif appartenant à ce type; windows est plus
primaire et donne ici le message lui-même; les évolutions
de windows se sont accomodées de ce manque de distinction
via les messages de notification et des structures variées.
- le test "if (G_hwnd_MainWindow==NULL) return 0;" avant
la loop detraitement des msg est inutile (fait 3 lignes
avant).
Mouai bof, dans un premier temps (avant d'utiliser des controles CHILD) je
veux faire comprendre qu'on peut faire ce qu'on veut de sa surface
d'affichage (ca sera d'ailleurs bien montré dans la prochaine leçon).
[...] ... ou le syndrome de la grille Excel
faites avec 3 millions d'edit Box.
[...] et même le bouton poussoir doit écrire le
label du bouton dans sa Client-Area et ne va pas faire appel à un controle
static pour ca...
- "#include "minprg.h" ne sert sûrement à rien (les fonctions
de minprg.c n'ont pas besoin d'êre exportées) - vous ne
fournissez pas ce fichier s'il existe.
oui, c'est plus par habitude. Ceci dit le .h contient des define utilisés
par minprg.c, donc il vaut mieux l'inclure...
Mouai, c'est polémique car le message ID est fonction d'un event type quand
même... bon, je vais changer le commentaire.
Mouai bof, dans un premier temps (avant d'utiliser des controles CHILD) je
veux faire comprendre qu'on peut faire ce qu'on veut de sa surface
d'affichage (ca sera d'ailleurs bien montré dans la prochaine leçon).
[...] ... ou le syndrome de la grille Excel
faites avec 3 millions d'edit Box.
[...] et même le bouton poussoir doit écrire le
label du bouton dans sa Client-Area et ne va pas faire appel à un controle
static pour ca...
- "#include "minprg.h" ne sert sûrement à rien (les fonctions
de minprg.c n'ont pas besoin d'êre exportées) - vous ne
fournissez pas ce fichier s'il existe.
oui, c'est plus par habitude. Ceci dit le .h contient des define utilisés
par minprg.c, donc il vaut mieux l'inclure...
Mouai, c'est polémique car le message ID est fonction d'un event type quand
même... bon, je vais changer le commentaire.
Mouai bof, dans un premier temps (avant d'utiliser des controles CHILD) je
veux faire comprendre qu'on peut faire ce qu'on veut de sa surface
d'affichage (ca sera d'ailleurs bien montré dans la prochaine leçon).
[...] ... ou le syndrome de la grille Excel
faites avec 3 millions d'edit Box.
[...] et même le bouton poussoir doit écrire le
label du bouton dans sa Client-Area et ne va pas faire appel à un controle
static pour ca...
- "#include "minprg.h" ne sert sûrement à rien (les fonctions
de minprg.c n'ont pas besoin d'êre exportées) - vous ne
fournissez pas ce fichier s'il existe.
oui, c'est plus par habitude. Ceci dit le .h contient des define utilisés
par minprg.c, donc il vaut mieux l'inclure...
Mouai, c'est polémique car le message ID est fonction d'un event type quand
même... bon, je vais changer le commentaire.
Vincent Burel wrote on 13/03/2008 22:53:
>
> Mouai bof, dans un premier temps (avant d'utiliser des controles CHILD)
> veux faire comprendre qu'on peut faire ce qu'on veut de sa surface
> d'affichage (ca sera d'ailleurs bien montré dans la prochaine leçon).
je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
> [...] et même le bouton poussoir doit écrire le
> label du bouton dans sa Client-Area et ne va pas faire appel à un
> static pour ca...
?!? un contrôle button est un contrôle, que voulez-vous qu'il soit ??
btw, les arguments (partiellement) cités ici n'étonnent beaucoup !
ne devrait en aucun cas s'alimenter de tous ces a-priori mais
respecter l'état de l'art, les bonnes façons de faire.
par exemple, je l'ai oublié dans mon post précédent, on ne fera jamais:
in WndProc:
case WM_COMMAND:
// switch on menuItemID
case IDT_DOSOMETHING:
dc=GetDC(hw);
strcpy(sss,"I write something in the Client Area");
TextOut(dc,0,0,sss,(int)strlen(sss));
ReleaseDC(hw,dc);
break;
car rien ne garantit que le DC soit prêt pour un affichage
et qu'il est disponible (vous ne le testez pas), et car ce
texte sera perdu dès le premier update.
on n'écrit jamais directement dans un DC, on fait cela
uniquement dans le traitement d'un WM_UPDATE.
>> - "#include "minprg.h" ne sert sûrement à rien (les fonctions
>> de minprg.c n'ont pas besoin d'êre exportées) - vous ne
>> fournissez pas ce fichier s'il existe.
>
> oui, c'est plus par habitude. Ceci dit le .h contient des define
> par minprg.c, donc il vaut mieux l'inclure...
donc il vaut mieux le fournir...
> Mouai, c'est polémique car le message ID est fonction d'un event type
> même... bon, je vais changer le commentaire.
non il n'est nullement "fonction de", la numérotation des msgID tient
même du va-comme-je-te-pousse.
Vincent Burel wrote on 13/03/2008 22:53:
>
> Mouai bof, dans un premier temps (avant d'utiliser des controles CHILD)
> veux faire comprendre qu'on peut faire ce qu'on veut de sa surface
> d'affichage (ca sera d'ailleurs bien montré dans la prochaine leçon).
je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
> [...] et même le bouton poussoir doit écrire le
> label du bouton dans sa Client-Area et ne va pas faire appel à un
> static pour ca...
?!? un contrôle button est un contrôle, que voulez-vous qu'il soit ??
btw, les arguments (partiellement) cités ici n'étonnent beaucoup !
ne devrait en aucun cas s'alimenter de tous ces a-priori mais
respecter l'état de l'art, les bonnes façons de faire.
par exemple, je l'ai oublié dans mon post précédent, on ne fera jamais:
in WndProc:
case WM_COMMAND:
// switch on menuItemID
case IDT_DOSOMETHING:
dc=GetDC(hw);
strcpy(sss,"I write something in the Client Area");
TextOut(dc,0,0,sss,(int)strlen(sss));
ReleaseDC(hw,dc);
break;
car rien ne garantit que le DC soit prêt pour un affichage
et qu'il est disponible (vous ne le testez pas), et car ce
texte sera perdu dès le premier update.
on n'écrit jamais directement dans un DC, on fait cela
uniquement dans le traitement d'un WM_UPDATE.
>> - "#include "minprg.h" ne sert sûrement à rien (les fonctions
>> de minprg.c n'ont pas besoin d'êre exportées) - vous ne
>> fournissez pas ce fichier s'il existe.
>
> oui, c'est plus par habitude. Ceci dit le .h contient des define
> par minprg.c, donc il vaut mieux l'inclure...
donc il vaut mieux le fournir...
> Mouai, c'est polémique car le message ID est fonction d'un event type
> même... bon, je vais changer le commentaire.
non il n'est nullement "fonction de", la numérotation des msgID tient
même du va-comme-je-te-pousse.
Vincent Burel wrote on 13/03/2008 22:53:
>
> Mouai bof, dans un premier temps (avant d'utiliser des controles CHILD)
> veux faire comprendre qu'on peut faire ce qu'on veut de sa surface
> d'affichage (ca sera d'ailleurs bien montré dans la prochaine leçon).
je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
> [...] et même le bouton poussoir doit écrire le
> label du bouton dans sa Client-Area et ne va pas faire appel à un
> static pour ca...
?!? un contrôle button est un contrôle, que voulez-vous qu'il soit ??
btw, les arguments (partiellement) cités ici n'étonnent beaucoup !
ne devrait en aucun cas s'alimenter de tous ces a-priori mais
respecter l'état de l'art, les bonnes façons de faire.
par exemple, je l'ai oublié dans mon post précédent, on ne fera jamais:
in WndProc:
case WM_COMMAND:
// switch on menuItemID
case IDT_DOSOMETHING:
dc=GetDC(hw);
strcpy(sss,"I write something in the Client Area");
TextOut(dc,0,0,sss,(int)strlen(sss));
ReleaseDC(hw,dc);
break;
car rien ne garantit que le DC soit prêt pour un affichage
et qu'il est disponible (vous ne le testez pas), et car ce
texte sera perdu dès le premier update.
on n'écrit jamais directement dans un DC, on fait cela
uniquement dans le traitement d'un WM_UPDATE.
>> - "#include "minprg.h" ne sert sûrement à rien (les fonctions
>> de minprg.c n'ont pas besoin d'êre exportées) - vous ne
>> fournissez pas ce fichier s'il existe.
>
> oui, c'est plus par habitude. Ceci dit le .h contient des define
> par minprg.c, donc il vaut mieux l'inclure...
donc il vaut mieux le fournir...
> Mouai, c'est polémique car le message ID est fonction d'un event type
> même... bon, je vais changer le commentaire.
non il n'est nullement "fonction de", la numérotation des msgID tient
même du va-comme-je-te-pousse.
> je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
car rien ne garantit que le DC soit prêt pour un affichage
et qu'il est disponible (vous ne le testez pas),
on n'écrit jamais directement dans un DC, on fait cela
uniquement dans le traitement d'un WM_UPDATE.
> je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
car rien ne garantit que le DC soit prêt pour un affichage
et qu'il est disponible (vous ne le testez pas),
on n'écrit jamais directement dans un DC, on fait cela
uniquement dans le traitement d'un WM_UPDATE.
> je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
car rien ne garantit que le DC soit prêt pour un affichage
et qu'il est disponible (vous ne le testez pas),
on n'écrit jamais directement dans un DC, on fait cela
uniquement dans le traitement d'un WM_UPDATE.
je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
Je me permets de mettre mon grain de soufre. Il me semble que Vincent
construit un tutoriel d'apprentissage des *bases* de la programmation
Windows. Je ne vois pas pourquoi il faudrait dès la première leçon
indiquer tout un jeu de règles qui relèvent de niveaux bien supérieurs,
sauf à vouloir faire en sorte que l'apprenti n'y comprenne plus rien.
[...]
je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
Je me permets de mettre mon grain de soufre. Il me semble que Vincent
construit un tutoriel d'apprentissage des *bases* de la programmation
Windows. Je ne vois pas pourquoi il faudrait dès la première leçon
indiquer tout un jeu de règles qui relèvent de niveaux bien supérieurs,
sauf à vouloir faire en sorte que l'apprenti n'y comprenne plus rien.
[...]
je n'ai pas parlé de "controles child" - j'ai dit que l'on ne dessinait
jamais dans un frame (mais dans une *window* *child* donc frameless).
Je me permets de mettre mon grain de soufre. Il me semble que Vincent
construit un tutoriel d'apprentissage des *bases* de la programmation
Windows. Je ne vois pas pourquoi il faudrait dès la première leçon
indiquer tout un jeu de règles qui relèvent de niveaux bien supérieurs,
sauf à vouloir faire en sorte que l'apprenti n'y comprenne plus rien.
[...]
Merci pour vos remarques, mais gaffe au trolling quand même :-)
Merci pour vos remarques, mais gaffe au trolling quand même :-)
Merci pour vos remarques, mais gaffe au trolling quand même :-)