Passage de paramètres à un callback de fenêtre ?
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 :
Code:
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;
} |
Ceci pour le main, et pour le callback :
Code:
1 2 3 4 5
|
LRESULT CALLBACK MainWndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
{
Libérer les ressources;
} |
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 !
Je veux paaaas céder aux variables globales ! Aidez-moi !