Ayant un probleme avec une fonction de CALLBACK et pour ne pas la citer
WndProc, j'ai chercher à acceder directement à la memoire, sans y parvenir
( sous dos nous avons la fameuse peekb ) mais sous win32 je n'y parvient
pas.
_comment acceder directement a la memoire virtuelle alloué au processus de
mon prog ?
_Et/ou acceder directement à la memoire virtuelle general ? ( genre dump)
et eventuellement, si un puriste avait trouvé la solution pour faire du vrai
C++ avec <Windows.h> et notament placer WndProc dans une classe. En tirer
son adresse sur un pointeur type WNDPROC, la ce serais vraiment NOEL pour
moi. ( j'ai le sentiment que les fonctions appartenant à un classe ne sont
pas constitué de la meme facon que les fonctions C: pointeur "this" peut
etre ?)
Ce probleme est récurant lorsque l'on se lance dans la programmation
windows.
DirectX par exemple ou APIWindows ne sont pas adapté au C++ a cause notament
de ces callback.
Votre avis ?
Cordialement
Heinquoi
"Vincent Burel" a écrit dans le message de news:c662l6$681$
1- SetClassLong si vous voulez subclasser une classe entière c'est plus simple.
Justement on ne veut pas subclasser toute une classe, mais uniquement cette fenêtre. Chaque fenêtre se voit associer sa propre WndProc créée dynamiquement. Cette WndProc "dynamique" appelle la WndProc de la classe en lui passant l'instance C++ associée à cette HWND (c'est clair non ? :-)
"Vincent Burel" <vincent.burel@wanadoo.fr> a écrit dans le message de
news:c662l6$681$1@news-reader4.wanadoo.fr...
1- SetClassLong si vous voulez subclasser une classe entière c'est plus
simple.
Justement on ne veut pas subclasser toute une classe, mais uniquement cette
fenêtre.
Chaque fenêtre se voit associer sa propre WndProc créée dynamiquement.
Cette WndProc "dynamique" appelle la WndProc de la classe en lui passant
l'instance C++ associée à cette HWND (c'est clair non ? :-)
"Vincent Burel" a écrit dans le message de news:c662l6$681$
1- SetClassLong si vous voulez subclasser une classe entière c'est plus simple.
Justement on ne veut pas subclasser toute une classe, mais uniquement cette fenêtre. Chaque fenêtre se voit associer sa propre WndProc créée dynamiquement. Cette WndProc "dynamique" appelle la WndProc de la classe en lui passant l'instance C++ associée à cette HWND (c'est clair non ? :-)
Aurélien REGAT-BARREL
> c'est vrai qu'il a un nom d'ordinateur des années 80 ... Je crois qu'on
lui
a proposé un role dans 2010 pour remplacer HAL 9000 . Le ASTOR 2001 n'a
pas
de sentiments contradictoire comme le HAL 9000 donc moins dangereux pour l'équipage... mais ca coutait trop cher...
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
> c'est vrai qu'il a un nom d'ordinateur des années 80 ... Je crois qu'on
lui
a proposé un role dans 2010 pour remplacer HAL 9000 . Le ASTOR 2001 n'a
pas
de sentiments contradictoire comme le HAL 9000 donc moins dangereux pour
l'équipage... mais ca coutait trop cher...
Puisque ça troll, petite annecdote sur ce nom "HAL".
const char * hal = "HAL";
int i = 0;
while ( hal[ i ] != ' ' )
{
char c = hal[ i ] + 1;
printf( "%c", c );
++i;
}
> c'est vrai qu'il a un nom d'ordinateur des années 80 ... Je crois qu'on
lui
a proposé un role dans 2010 pour remplacer HAL 9000 . Le ASTOR 2001 n'a
pas
de sentiments contradictoire comme le HAL 9000 donc moins dangereux pour l'équipage... mais ca coutait trop cher...
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
Vincent Burel
"Aurélien REGAT-BARREL" wrote in message news:40869da6$0$17625$
"Vincent Burel" a écrit dans le message de news:c662l6$681$ > 1- SetClassLong si vous voulez subclasser une classe entière c'est plus > simple.
Justement on ne veut pas subclasser toute une classe, mais uniquement
cette
fenêtre. Chaque fenêtre se voit associer sa propre WndProc créée dynamiquement. Cette WndProc "dynamique" appelle la WndProc de la classe en lui passant l'instance C++ associée à cette HWND (c'est clair non ? :-)
d'accord c'est clair... mais je ne vois pas l'utilité du côté "dynamique" de la chose. une seule wndproc de sousclassement suffit, d'utilisez le champ GWL_USERDATA de la windows pour y stocker l'instance de l'objet associé.
si la windows est définie par une de vos classe , propriétaire , faite en sorte que le champ cbWndExtra ne soit pas zero sinon vous ne pourrez rien stocker dans vos fenêtres...
VB
"Aurélien REGAT-BARREL" <nospam-aregatba@yahoo.fr.invalid> wrote in message
news:40869da6$0$17625$636a15ce@news.free.fr...
"Vincent Burel" <vincent.burel@wanadoo.fr> a écrit dans le message de
news:c662l6$681$1@news-reader4.wanadoo.fr...
> 1- SetClassLong si vous voulez subclasser une classe entière c'est plus
> simple.
Justement on ne veut pas subclasser toute une classe, mais uniquement
cette
fenêtre.
Chaque fenêtre se voit associer sa propre WndProc créée dynamiquement.
Cette WndProc "dynamique" appelle la WndProc de la classe en lui passant
l'instance C++ associée à cette HWND (c'est clair non ? :-)
d'accord c'est clair... mais je ne vois pas l'utilité du côté "dynamique" de
la chose.
une seule wndproc de sousclassement suffit, d'utilisez le champ GWL_USERDATA
de la windows pour y stocker l'instance de l'objet associé.
si la windows est définie par une de vos classe , propriétaire , faite en
sorte que le champ cbWndExtra ne soit pas zero sinon vous ne pourrez rien
stocker dans vos fenêtres...
"Aurélien REGAT-BARREL" wrote in message news:40869da6$0$17625$
"Vincent Burel" a écrit dans le message de news:c662l6$681$ > 1- SetClassLong si vous voulez subclasser une classe entière c'est plus > simple.
Justement on ne veut pas subclasser toute une classe, mais uniquement
cette
fenêtre. Chaque fenêtre se voit associer sa propre WndProc créée dynamiquement. Cette WndProc "dynamique" appelle la WndProc de la classe en lui passant l'instance C++ associée à cette HWND (c'est clair non ? :-)
d'accord c'est clair... mais je ne vois pas l'utilité du côté "dynamique" de la chose. une seule wndproc de sousclassement suffit, d'utilisez le champ GWL_USERDATA de la windows pour y stocker l'instance de l'objet associé.
si la windows est définie par une de vos classe , propriétaire , faite en sorte que le champ cbWndExtra ne soit pas zero sinon vous ne pourrez rien stocker dans vos fenêtres...
VB
Vincent Burel
"Aurélien REGAT-BARREL" wrote in message news:40869ea9$0$17602$
> c'est vrai qu'il a un nom d'ordinateur des années 80 ... Je crois qu'on lui > a proposé un role dans 2010 pour remplacer HAL 9000 . Le ASTOR 2001 n'a pas > de sentiments contradictoire comme le HAL 9000 donc moins dangereux pour > l'équipage... mais ca coutait trop cher...
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
A l'époque il se disait que c'était comme ca qu'ils avaient trouvé le nom de l'ordinateur de 2001.
VB
"Aurélien REGAT-BARREL" <nospam-aregatba@yahoo.fr.invalid> wrote in message
news:40869ea9$0$17602$636a15ce@news.free.fr...
> c'est vrai qu'il a un nom d'ordinateur des années 80 ... Je crois qu'on
lui
> a proposé un role dans 2010 pour remplacer HAL 9000 . Le ASTOR 2001 n'a
pas
> de sentiments contradictoire comme le HAL 9000 donc moins dangereux pour
> l'équipage... mais ca coutait trop cher...
Puisque ça troll, petite annecdote sur ce nom "HAL".
const char * hal = "HAL";
int i = 0;
while ( hal[ i ] != ' ' )
{
char c = hal[ i ] + 1;
printf( "%c", c );
++i;
}
A l'époque il se disait que c'était comme ca qu'ils avaient trouvé le nom de
l'ordinateur de 2001.
"Aurélien REGAT-BARREL" wrote in message news:40869ea9$0$17602$
> c'est vrai qu'il a un nom d'ordinateur des années 80 ... Je crois qu'on lui > a proposé un role dans 2010 pour remplacer HAL 9000 . Le ASTOR 2001 n'a pas > de sentiments contradictoire comme le HAL 9000 donc moins dangereux pour > l'équipage... mais ca coutait trop cher...
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
A l'époque il se disait que c'était comme ca qu'ils avaient trouvé le nom de l'ordinateur de 2001.
VB
AMcD®
Aurélien REGAT-BARREL wrote:
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL"; int i = 0; while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
-- AMcD®
http://arnold.mcdonald.free.fr/
Aurélien REGAT-BARREL wrote:
Puisque ça troll, petite annecdote sur ce nom "HAL".
const char * hal = "HAL";
int i = 0;
while ( hal[ i ] != ' ' )
{
char c = hal[ i ] + 1;
printf( "%c", c );
++i;
}
Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL";
int i = 0;
while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL"; int i = 0; while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
-- AMcD®
http://arnold.mcdonald.free.fr/
Ambassadeur Kosh
> Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL"; int i = 0; while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
je propose un peu plus rapide :
printf("IBM") ;
quoi, je suis lourd ? naaannnn....
> Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL";
int i = 0;
while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
const char * hal = "HAL"; int i = 0; while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
je propose un peu plus rapide :
printf("IBM") ;
AAAAAAhhh
printf() pour afficher une chaîne constante ??? Quelle optimisation !
-- cns
Cyrille Szymanski
On 2004-04-21, AMcD® wrote:
Aurélien REGAT-BARREL wrote:
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL"; int i = 0; while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
AAAAAAh
printf() pour fficher un caractère ????
-- cns
On 2004-04-21, AMcD® <arnold.mcdonald@free.fr> wrote:
Aurélien REGAT-BARREL wrote:
Puisque ça troll, petite annecdote sur ce nom "HAL".
const char * hal = "HAL";
int i = 0;
while ( hal[ i ] != ' ' )
{
char c = hal[ i ] + 1;
printf( "%c", c );
++i;
}
Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL";
int i = 0;
while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
Puisque ça troll, petite annecdote sur ce nom "HAL". const char * hal = "HAL"; int i = 0; while ( hal[ i ] != ' ' ) { char c = hal[ i ] + 1; printf( "%c", c ); ++i; }
Puisque ça trolle, optimise un peu :o) :
const char * hal = "HAL"; int i = 0; while ( hal[i]!= ' ' ) printf( "%c", hal[i++] + 1 );
Arf, je savais pas qu'ATL l'utilisait. C'est sorti quand ATL, avant ou après OWL ? Car je suis presque sûr d'avoir vu cette technique dans OWL, ce qui n'en donnerait pas la paternité à MS.
ATL 1.0 date de l'été 96. Ce principe s'appelle le thunking, et ce n'est ni ATL ni OWL qui l'ont inventé, c'est une méthode qui a été beaucoup utilisée dans les années 70-80 quand le jeu préféré des informaticiens était la génération dynamique de code. Depuis, les OS et le hard ont rendu la chose un peu plus compliqué (protection des zones de code/data, cache des instructions, etc....), et on s'est surtout rendu compte qu'abuser de ce genre de choses était un cauchemar de maintenance, mais bien utilisé c'est très puissant.
Quand à savoir qui a eu l'idée de le faire en 1er pour les WndProc, aucune idée, il faudrait demander à un vieux routier de Win 3.1 (voir avant).
Arnaud
Aurélien REGAT-BARREL wrote:
Arf, je savais pas qu'ATL l'utilisait. C'est sorti quand ATL, avant
ou après OWL ? Car je suis presque sûr d'avoir vu cette technique
dans OWL, ce qui n'en donnerait pas la paternité à MS.
ATL 1.0 date de l'été 96. Ce principe s'appelle le thunking, et ce n'est ni
ATL ni OWL qui l'ont inventé, c'est une méthode qui a été beaucoup utilisée
dans les années 70-80 quand le jeu préféré des informaticiens était la
génération dynamique de code.
Depuis, les OS et le hard ont rendu la chose un peu plus compliqué
(protection des zones de code/data, cache des instructions, etc....), et on
s'est surtout rendu compte qu'abuser de ce genre de choses était un
cauchemar de maintenance, mais bien utilisé c'est très puissant.
Quand à savoir qui a eu l'idée de le faire en 1er pour les WndProc, aucune
idée, il faudrait demander à un vieux routier de Win 3.1 (voir avant).
Arf, je savais pas qu'ATL l'utilisait. C'est sorti quand ATL, avant ou après OWL ? Car je suis presque sûr d'avoir vu cette technique dans OWL, ce qui n'en donnerait pas la paternité à MS.
ATL 1.0 date de l'été 96. Ce principe s'appelle le thunking, et ce n'est ni ATL ni OWL qui l'ont inventé, c'est une méthode qui a été beaucoup utilisée dans les années 70-80 quand le jeu préféré des informaticiens était la génération dynamique de code. Depuis, les OS et le hard ont rendu la chose un peu plus compliqué (protection des zones de code/data, cache des instructions, etc....), et on s'est surtout rendu compte qu'abuser de ce genre de choses était un cauchemar de maintenance, mais bien utilisé c'est très puissant.
Quand à savoir qui a eu l'idée de le faire en 1er pour les WndProc, aucune idée, il faudrait demander à un vieux routier de Win 3.1 (voir avant).