1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| class Lecteur
{
public://Si la fonction de création n'est pas dans la classe
static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
};
/* Procédure de boite de dialogue
------------------------------ */
INT_PTR CALLBACK Lecteur::DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//Ici, de base, on n'a pas accès à this : Il faut s'arranger pour le passer autrement.
Lecteur *this = reinterpret_cast<Lecteur *>(GetWindowLong(hDlg, GWL_USERDATA));
switch(uMsg)
{
case WM_INITDIALOG:
{
SetWindowLong(hDlg, GWL_USERDATA, lParam);
this = reinterpret_cast<Lecteur *>(lParam);
}
break;
//Traitement des autres messages...
};
}
//Dans la fonction de création
{
//(bien sûr, tu peux utiliser un pointeur sur lecteur à la place)
Lecteur monLecteur;
hWnd_global = CreateDialogParam(
hInstance_globale,
MAKEINTRESOURCE(numero_ressource_boite_de_dialogue),
NULL,
Lecteur::DialogProc,
(LPARAM)&monLecteur
);
} |
Partager