Bonjour,
Dans mon appli je fais appel à une boite de dialogue dans laquelle je suis amené à rechercher des élément via une seconde boite de dialogue.
Pour passer l'information j'utilise "SetWindowLong ()" mais au retour une fois récupéré par "GetWindowLong()", l'application plante.
http://www.photosreflex.net/temp/erreur_visualc.jpg
Pourtant j'affiche bien le bon resultat par MessageBox() ...
Il a sûrement quelque chose ...
Comment passer une structure d'un dialogue à un autre ...
Si quelqu'un a une idée
Merci d'avance
DialogBox appelante :
DialogBox appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 case BN_CLICKED: DialogBox(hInst, MAKEINTRESOURCE(Libpredef), hDlg, LibpredefDlgProc); lbpdef = (LIBPREDEF *)GetWindowLong(hDlg, DWL_USER); strcpy(szBuffer, lbpdef->LibPredef); MessageBox (hDlg, szBuffer, szAppName, MB_OK | MB_ICONEXCLAMATION); SetDlgItemText (hDlg, IDC_OBJET, szBuffer, strlen(szBuffer)); break;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 BOOL CALLBACK LibpredefDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam) { HGLOBAL hglb; LIBPREDEF *lbpdef; switch (message) { case WM_INITDIALOG: if (hglb = GlobalAlloc(GPTR,sizeof(LIBPREDEF))) { if (lbpdef = (LIBPREDEF *)GlobalLock(hglb)) { SetWindowLong(GetParent(hDlg),DWL_USER,(LONG)lbpdef); lbpdef->hglb = hglb; strcpy(lbpdef->LibPredef, "Test transition de données"); return(0L); } GlobalFree(hglb); } return TRUE; case WM_COMMAND: switch (wParam) { case IDOK : case IDCANCEL : EndDialog (hDlg, 0) ; return TRUE ; } break ; } return FALSE ; }
Partager