@@ -86,14 +86,29 @@ DlgData_LoadBitmaps(_Inout_ PDLG_DATA pDlgData)
86
86
}
87
87
}
88
88
89
- static void
90
- DlgData_Destroy (PDLG_DATA pDlgData )
89
+ static VOID
90
+ DlgData_Destroy (_Inout_ HWND hwndDlg )
91
91
{
92
+ PDLG_DATA pDlgData ;
93
+
94
+ pDlgData = (PDLG_DATA )GetWindowLongPtrW (hwndDlg , GWLP_USERDATA );
92
95
if (!pDlgData )
96
+ {
93
97
return ;
98
+ }
99
+
100
+ SetWindowLongPtrW (hwndDlg , GWLP_USERDATA , (LONG_PTR )NULL );
101
+
102
+ if (pDlgData -> hBarBitmap )
103
+ {
104
+ DeleteObject (pDlgData -> hBarBitmap );
105
+ }
106
+
107
+ if (pDlgData -> hLogoBitmap )
108
+ {
109
+ DeleteObject (pDlgData -> hLogoBitmap );
110
+ }
94
111
95
- DeleteObject (pDlgData -> hLogoBitmap );
96
- DeleteObject (pDlgData -> hBarBitmap );
97
112
HeapFree (GetProcessHeap (), 0 , pDlgData );
98
113
}
99
114
@@ -264,7 +279,7 @@ StatusDialogProc(
264
279
{
265
280
KillTimer (hwndDlg , IDT_BAR );
266
281
}
267
- DlgData_Destroy (pDlgData );
282
+ DlgData_Destroy (hwndDlg );
268
283
return TRUE;
269
284
}
270
285
}
@@ -434,7 +449,7 @@ WelcomeDialogProc(
434
449
}
435
450
case WM_DESTROY :
436
451
{
437
- DlgData_Destroy (pDlgData );
452
+ DlgData_Destroy (hwndDlg );
438
453
return TRUE;
439
454
}
440
455
}
@@ -1230,7 +1245,7 @@ LogonDialogProc(
1230
1245
}
1231
1246
1232
1247
case WM_DESTROY :
1233
- DlgData_Destroy (pDlgData );
1248
+ DlgData_Destroy (hwndDlg );
1234
1249
return TRUE;
1235
1250
1236
1251
case WM_COMMAND :
@@ -1489,7 +1504,7 @@ UnlockDialogProc(
1489
1504
return TRUE;
1490
1505
}
1491
1506
case WM_DESTROY :
1492
- DlgData_Destroy (pDlgData );
1507
+ DlgData_Destroy (hwndDlg );
1493
1508
return TRUE;
1494
1509
1495
1510
case WM_COMMAND :
@@ -1577,7 +1592,7 @@ LockedDialogProc(
1577
1592
}
1578
1593
case WM_DESTROY :
1579
1594
{
1580
- DlgData_Destroy (pDlgData );
1595
+ DlgData_Destroy (hwndDlg );
1581
1596
return TRUE;
1582
1597
}
1583
1598
}
0 commit comments