cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 12 févr. 2006 à 17:38
Salut,
Tu ne devrais pas appeler DefWindowProc dans ta procedure,
mais appeler la WndProc suivante (c'est a dire: appeler hWndProc
avec CallWindowProc()).
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 15 févr. 2006 à 19:42
Merci aardman pour ta réponse, j'ai modifié le code mais j'ai encore un problème, voici le nouveau code :
//Déclaration dans la section Private de la class TForm1.
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static WNDPROC WndProc;
//Code à l'initialisation de ma Form.
WndProc = (WNDPROC)SetWindowLong(Application->Handle, GWL_WNDPROC, (LONG)WindowProc);
//La nouvelle fonction de traitement des messages de la fenêtre.
LRESULT CALLBACK TForm1::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
Form1->RichEdit1->Text = Form1->RichEdit1->Text + uMsg + "\r\n";
switch (uMsg)
{
case WM_MOVING :
return 0;
default :
return CallWindowProc(WndProc, hwnd, uMsg, wParam, lParam);
}
}
C'est peut être une erreur du a la porté des variables, je suis pas très a l'aise avec cette notion.
Quand on déclare une variable dans la section private d'une class comme c'est le cas ici, elle est visible uniquement dans cette class, et quand on déclare une variable dans la section public de cette class, elle est visible à l'exterieur de la class, je me trompe ?
Quand à la notion "static" ça veux dire que la variable ne peut être modifiée, on passe en fait une copie de la variable ? j'aimerai des explications parce que je suis paumé...