Bonjour,
Voilà mon problème :
J'ai une application qui doit libérer toutes ses ressources à la réception d'un message window envoyé par une autre appli. Le seul moyen que j'ai trouvé de le récupérer est de créer une fenêtre et d'entrer dans une boucle de réception des messages, comme décrit ici.
Ca donne quelque chose comme :
Ceci pour le main, et pour le callback :
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
33
34
35
36
37
38
39
40
41 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { Lancement de threads qui utilisent des ressources qui devront être libérées; HWND hwnd; MSG msg; WNDCLASS wc; ulMessageFinVie=RegisterWindowMessage(_T("FinAppli")); hinst = hInstance; wc.style = 0 ; wc.lpfnWndProc = MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = _T("ClassName"); if(!RegisterClass(&wc)) return FALSE; hwnd = CreateWindow(_T("Name1"), _T("Name2"), WS_VISIBLE | WS_CAPTION | WS_SYSMENU, 700, 700, 20, 20, NULL, NULL, hInstance, NULL); if (!hwnd) return FALSE; ShowWindow(hwnd, nCmdShow); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
Le seul petit soucis : Jusque là je n'utilise aucune variable globale (c'est bien !), mais les ressources que je dois libérer sont donc inaccessibles depuis la fonction callback de la fenêtre que j'ai créée, vu que MainWndProc ne prend pas de paramètre utilisateur... ou alors j'ai raté quelque chose !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 LRESULT CALLBACK MainWndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam) { Libérer les ressources; }
Je veux paaaas céder aux variables globales ! Aidez-moi !
Partager