Bonjour,
Je souhaiterai intégrer une fonction WndProc à l'intérieur d'une classe et
la compilation me jette comme une merde à l'appel de la fonction
SetWindowLong .
Bonjour,
Je souhaiterai intégrer une fonction WndProc à l'intérieur d'une classe et
la compilation me jette comme une merde à l'appel de la fonction
SetWindowLong .
Bonjour,
Je souhaiterai intégrer une fonction WndProc à l'intérieur d'une classe et
la compilation me jette comme une merde à l'appel de la fonction
SetWindowLong .
Je souhaiterai intégrer une fonction WndProc à l'intérieur d'une classe
et la compilation me jette comme une merde à l'appel de la fonction
SetWindowLong .
Je refuse d'utiliser le MFC et l'afx , c'est trop lourd comme interface.
J'aurais besoin de votre aide pour corriger cet erreur C2440 sans
exclure le WndProc à l'extérieur de la classe
1>cast2.cpp
1>f:projetvcrecherchecast2cast2cast2.cpp(30) : error C2440:
'reinterpret_cast' : cannot convert from 'LRESULT (__stdcall TCroix::*
)(HWND,UINT,WPARAM,LPARAM)' to 'long'
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
class TCroix {
public:
TCroix();
LRESULT CALLBACK CroixMsgProc(HWND, UINT, WPARAM, LPARAM);
void attach(HWND w);
};
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
}
TCroix::TCroix() {
WNDCLASSEX wcex;
...
RegisterClassEx(&wcex);
}
LRESULT CALLBACK TCroix::CroixMsgProc(HWND hwnd, UINT message, WPARAM
wParam, LPARAM lParam)
{
if (message==WM_PAINT){
...
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE, LPTSTR, int nCmdShow)
{
MSG msg;
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
return FALSE;
while (GetMessage(&msg, NULL, 0, 0)){
if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
...
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // Store instance handle in our global variable
HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message){
case WM_CREATE:{
TCroix* croix = new TCroix;
HWND h = CreateWindow("TCROIX", "SampleCroix",
WS_CHILD | WS_VISIBLE |ES_LEFT ,
10, 10, 100, 100, hWnd, NULL, hInst, NULL);
croix->attach(h);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Je souhaiterai intégrer une fonction WndProc à l'intérieur d'une classe
et la compilation me jette comme une merde à l'appel de la fonction
SetWindowLong .
Je refuse d'utiliser le MFC et l'afx , c'est trop lourd comme interface.
J'aurais besoin de votre aide pour corriger cet erreur C2440 sans
exclure le WndProc à l'extérieur de la classe
1>cast2.cpp
1>f:projetvcrecherchecast2cast2cast2.cpp(30) : error C2440:
'reinterpret_cast' : cannot convert from 'LRESULT (__stdcall TCroix::*
)(HWND,UINT,WPARAM,LPARAM)' to 'long'
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
class TCroix {
public:
TCroix();
LRESULT CALLBACK CroixMsgProc(HWND, UINT, WPARAM, LPARAM);
void attach(HWND w);
};
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
}
TCroix::TCroix() {
WNDCLASSEX wcex;
...
RegisterClassEx(&wcex);
}
LRESULT CALLBACK TCroix::CroixMsgProc(HWND hwnd, UINT message, WPARAM
wParam, LPARAM lParam)
{
if (message==WM_PAINT){
...
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE, LPTSTR, int nCmdShow)
{
MSG msg;
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
return FALSE;
while (GetMessage(&msg, NULL, 0, 0)){
if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
...
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // Store instance handle in our global variable
HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message){
case WM_CREATE:{
TCroix* croix = new TCroix;
HWND h = CreateWindow("TCROIX", "SampleCroix",
WS_CHILD | WS_VISIBLE |ES_LEFT ,
10, 10, 100, 100, hWnd, NULL, hInst, NULL);
croix->attach(h);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Je souhaiterai intégrer une fonction WndProc à l'intérieur d'une classe
et la compilation me jette comme une merde à l'appel de la fonction
SetWindowLong .
Je refuse d'utiliser le MFC et l'afx , c'est trop lourd comme interface.
J'aurais besoin de votre aide pour corriger cet erreur C2440 sans
exclure le WndProc à l'extérieur de la classe
1>cast2.cpp
1>f:projetvcrecherchecast2cast2cast2.cpp(30) : error C2440:
'reinterpret_cast' : cannot convert from 'LRESULT (__stdcall TCroix::*
)(HWND,UINT,WPARAM,LPARAM)' to 'long'
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
class TCroix {
public:
TCroix();
LRESULT CALLBACK CroixMsgProc(HWND, UINT, WPARAM, LPARAM);
void attach(HWND w);
};
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
}
TCroix::TCroix() {
WNDCLASSEX wcex;
...
RegisterClassEx(&wcex);
}
LRESULT CALLBACK TCroix::CroixMsgProc(HWND hwnd, UINT message, WPARAM
wParam, LPARAM lParam)
{
if (message==WM_PAINT){
...
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE, LPTSTR, int nCmdShow)
{
MSG msg;
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
return FALSE;
while (GetMessage(&msg, NULL, 0, 0)){
if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
...
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // Store instance handle in our global variable
HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message){
case WM_CREATE:{
TCroix* croix = new TCroix;
HWND h = CreateWindow("TCROIX", "SampleCroix",
WS_CHILD | WS_VISIBLE |ES_LEFT ,
10, 10, 100, 100, hWnd, NULL, hInst, NULL);
croix->attach(h);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Bonjour,
Je souhaiterai intégrer une fonction WndProc à l'intérieur
d'une classe et la compilation me jette comme une merde à
l'appel de la fonction SetWindowLong .
1>------ Build started: Project: cast2, Configuration: Debug Win32 ------
1>Compiling...
1>cast2.cpp
1>f:projetvcrecherchecast2cast2cast2.cpp(30) : error C2440:
'reinterpret_cast' : cannot convert from 'LRESULT (__stdcall TCroix::*
)(HWND,UINT,WPARAM,LPARAM)' to 'long'
1> There is no context in which this conversion is possibl e
1>Build log was saved at
"file://f:Projetvcrecherchecast2cast2DebugBuildLog.htm"
1>cast2 - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date , 0 skipped ==========
Source listing :
// cast2.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "cast2.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // c urrent instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterCla ss(HINSTANCE hInstance);
BOOL InitInstance( HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
class TCroix
{
public:
TCroix();
LRESULT CALLBACK CroixMsgProc(HWND hwnd, UINT message, WP ARAM wParam,
LPARAM lParam);
void attach(HWND w);
};
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
Bonjour,
Je souhaiterai intégrer une fonction WndProc à l'intérieur
d'une classe et la compilation me jette comme une merde à
l'appel de la fonction SetWindowLong .
1>------ Build started: Project: cast2, Configuration: Debug Win32 ------
1>Compiling...
1>cast2.cpp
1>f:projetvcrecherchecast2cast2cast2.cpp(30) : error C2440:
'reinterpret_cast' : cannot convert from 'LRESULT (__stdcall TCroix::*
)(HWND,UINT,WPARAM,LPARAM)' to 'long'
1> There is no context in which this conversion is possibl e
1>Build log was saved at
"file://f:Projetvcrecherchecast2cast2DebugBuildLog.htm"
1>cast2 - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date , 0 skipped ==========
Source listing :
// cast2.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "cast2.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // c urrent instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterCla ss(HINSTANCE hInstance);
BOOL InitInstance( HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
class TCroix
{
public:
TCroix();
LRESULT CALLBACK CroixMsgProc(HWND hwnd, UINT message, WP ARAM wParam,
LPARAM lParam);
void attach(HWND w);
};
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
Bonjour,
Je souhaiterai intégrer une fonction WndProc à l'intérieur
d'une classe et la compilation me jette comme une merde à
l'appel de la fonction SetWindowLong .
1>------ Build started: Project: cast2, Configuration: Debug Win32 ------
1>Compiling...
1>cast2.cpp
1>f:projetvcrecherchecast2cast2cast2.cpp(30) : error C2440:
'reinterpret_cast' : cannot convert from 'LRESULT (__stdcall TCroix::*
)(HWND,UINT,WPARAM,LPARAM)' to 'long'
1> There is no context in which this conversion is possibl e
1>Build log was saved at
"file://f:Projetvcrecherchecast2cast2DebugBuildLog.htm"
1>cast2 - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date , 0 skipped ==========
Source listing :
// cast2.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "cast2.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // c urrent instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterCla ss(HINSTANCE hInstance);
BOOL InitInstance( HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
class TCroix
{
public:
TCroix();
LRESULT CALLBACK CroixMsgProc(HWND hwnd, UINT message, WP ARAM wParam,
LPARAM lParam);
void attach(HWND w);
};
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
Et ici, tu utilises le nom de cette fonction membre sans
l'appeler, ni explicitement en prendre l'adresse. Ce qui n'est
pas légal en C++. Mais il me semble avoir entendu dire que VC++
a une extensionn qui le permet. Dans ce cas-là, et que mon
soupçon ci-dessus sur la declaration de CroixMsgProc est
correct, c'est ici l'erreur.
J'ai jeté un coup d'oeil à la documentation de SetWindowLong ;
malheureusement, ce n'est pas clair ce que signifie ce long
qu'on positionne.
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
Et ici, tu utilises le nom de cette fonction membre sans
l'appeler, ni explicitement en prendre l'adresse. Ce qui n'est
pas légal en C++. Mais il me semble avoir entendu dire que VC++
a une extensionn qui le permet. Dans ce cas-là, et que mon
soupçon ci-dessus sur la declaration de CroixMsgProc est
correct, c'est ici l'erreur.
J'ai jeté un coup d'oeil à la documentation de SetWindowLong ;
malheureusement, ce n'est pas clair ce que signifie ce long
qu'on positionne.
void TCroix::attach(HWND w)
{
reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
reinterpret_cast<long>(CroixMsgProc)));
Et ici, tu utilises le nom de cette fonction membre sans
l'appeler, ni explicitement en prendre l'adresse. Ce qui n'est
pas légal en C++. Mais il me semble avoir entendu dire que VC++
a une extensionn qui le permet. Dans ce cas-là, et que mon
soupçon ci-dessus sur la declaration de CroixMsgProc est
correct, c'est ici l'erreur.
J'ai jeté un coup d'oeil à la documentation de SetWindowLong ;
malheureusement, ce n'est pas clair ce que signifie ce long
qu'on positionne.
James Kanze a écrit :
>> void TCroix::attach(HWND w)
>> {
>> reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
>> reinterpret_cast<long>(CroixMsgProc)));
> Et ici, tu utilises le nom de cette fonction membre sans
> l'appeler, ni explicitement en prendre l'adresse. Ce qui
> n'est pas légal en C++. Mais il me semble avoir entendu dire
> que VC++ a une extensionn qui le permet. Dans ce cas-là, et
> que mon soupçon ci-dessus sur la declaration de CroixMsgProc
> est correct, c'est ici l'erreur.
le cast sur le retour est inutile.
le cast sur le paramètre est invalide car la méthode
est non statique (comme tu l'indiquais plus haut).
ici le PO veux simplement faire:
::SetWindowLong(w, GWL_WNDPROC, (long) CroixMsgProc);
où le 3ième paramètre est l'adresse d'une méthode définie comme :
static long __stdcall CroixMsgProc(HWND,
unsigned int, unsigned int, long);
HWND est une structure opaque, __stdcall un modifier
appliquant la convention d'appel "standard" de microsoft, à
savoir:
<quote>
STDCALL passes arguments right-to-left, and returns the value
in eax. The called function cleans the stack, unlike CDECL.
This means that STDCALL doesn't allow variable-length argument
lists.
</quote>
> J'ai jeté un coup d'oeil à la documentation de SetWindowLong
> ; malheureusement, ce n'est pas clair ce que signifie ce
> long qu'on positionne.
en effet cela (ce 3ième param.) peut être très différent (un
int 16 ou 32 bits ou un pointeur de fonction selon le 2nd
param.) (avec évidemment aucun contrôle de type possible,
comme cela n'est pas rare avec les APIs MS).
James Kanze a écrit :
>> void TCroix::attach(HWND w)
>> {
>> reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
>> reinterpret_cast<long>(CroixMsgProc)));
> Et ici, tu utilises le nom de cette fonction membre sans
> l'appeler, ni explicitement en prendre l'adresse. Ce qui
> n'est pas légal en C++. Mais il me semble avoir entendu dire
> que VC++ a une extensionn qui le permet. Dans ce cas-là, et
> que mon soupçon ci-dessus sur la declaration de CroixMsgProc
> est correct, c'est ici l'erreur.
le cast sur le retour est inutile.
le cast sur le paramètre est invalide car la méthode
est non statique (comme tu l'indiquais plus haut).
ici le PO veux simplement faire:
::SetWindowLong(w, GWL_WNDPROC, (long) CroixMsgProc);
où le 3ième paramètre est l'adresse d'une méthode définie comme :
static long __stdcall CroixMsgProc(HWND,
unsigned int, unsigned int, long);
HWND est une structure opaque, __stdcall un modifier
appliquant la convention d'appel "standard" de microsoft, à
savoir:
<quote>
STDCALL passes arguments right-to-left, and returns the value
in eax. The called function cleans the stack, unlike CDECL.
This means that STDCALL doesn't allow variable-length argument
lists.
</quote>
> J'ai jeté un coup d'oeil à la documentation de SetWindowLong
> ; malheureusement, ce n'est pas clair ce que signifie ce
> long qu'on positionne.
en effet cela (ce 3ième param.) peut être très différent (un
int 16 ou 32 bits ou un pointeur de fonction selon le 2nd
param.) (avec évidemment aucun contrôle de type possible,
comme cela n'est pas rare avec les APIs MS).
James Kanze a écrit :
>> void TCroix::attach(HWND w)
>> {
>> reinterpret_cast<WNDPROC>(::SetWindowLong(w, GWL_WNDPROC,
>> reinterpret_cast<long>(CroixMsgProc)));
> Et ici, tu utilises le nom de cette fonction membre sans
> l'appeler, ni explicitement en prendre l'adresse. Ce qui
> n'est pas légal en C++. Mais il me semble avoir entendu dire
> que VC++ a une extensionn qui le permet. Dans ce cas-là, et
> que mon soupçon ci-dessus sur la declaration de CroixMsgProc
> est correct, c'est ici l'erreur.
le cast sur le retour est inutile.
le cast sur le paramètre est invalide car la méthode
est non statique (comme tu l'indiquais plus haut).
ici le PO veux simplement faire:
::SetWindowLong(w, GWL_WNDPROC, (long) CroixMsgProc);
où le 3ième paramètre est l'adresse d'une méthode définie comme :
static long __stdcall CroixMsgProc(HWND,
unsigned int, unsigned int, long);
HWND est une structure opaque, __stdcall un modifier
appliquant la convention d'appel "standard" de microsoft, à
savoir:
<quote>
STDCALL passes arguments right-to-left, and returns the value
in eax. The called function cleans the stack, unlike CDECL.
This means that STDCALL doesn't allow variable-length argument
lists.
</quote>
> J'ai jeté un coup d'oeil à la documentation de SetWindowLong
> ; malheureusement, ce n'est pas clair ce que signifie ce
> long qu'on positionne.
en effet cela (ce 3ième param.) peut être très différent (un
int 16 ou 32 bits ou un pointeur de fonction selon le 2nd
param.) (avec évidemment aucun contrôle de type possible,
comme cela n'est pas rare avec les APIs MS).