GetOpenFileName et Thread générés [WIN32] [Résolu]

Signaler
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
Pistol_Pete
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
Salut

Est il normale qu'après avoir exécuté la fonction GetOpenFileName, le nombre de thread du programme passe de 1 à 3!
Y a t'il un moyen de suprimer ces threads?

Voici le code qui permet au click gauche de la souris, d'ouvrir la boite de dialogue en question.(Projet généré avec les template de Brunews)

#define _WIN32_WINNT 0x0501
#define _WIN32_IE 0x0501
#include <windows.h>
//#include "resource.h"

HINSTANCE hinst;
HWND hmain;
char szappname[] = "ACHANGER";

LRESULT CALLBACK AppWndProc(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam)
{
    OPENFILENAME ofn;
    char szFile[MAX_PATH]={0};

  switch(mssg) {

      case WM_LBUTTONDOWN:

        szFile[0]=0;
        ZeroMemory(&ofn, sizeof(OPENFILENAME));
        ofn.lStructSize = sizeof(OPENFILENAME);
        ofn.hwndOwner = hwnd;
        ofn.lpstrFile = szFile;
        ofn.nMaxFile = MAX_PATH;
        ofn.lpstrFilter =0;
        ofn.nFilterIndex = 0;
        ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

        if (GetOpenFileName(&ofn)==TRUE)
        {
           
        }
       

          break;
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
  }
  return DefWindowProc(hwnd, mssg, wParam, lParam);
}

DWORD __stdcall InitInstance()
{
  WNDCLASSEX     wndcls;
  memset(&wndcls, 0, sizeof(WNDCLASSEX));
  wndcls.cbSize = sizeof(WNDCLASSEX);
  wndcls.lpfnWndProc   = AppWndProc;
  wndcls.style         = CS_HREDRAW | CS_VREDRAW;
  wndcls.hInstance     = hinst;
  wndcls.lpszClassName = szappname;
  wndcls.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
  wndcls.hCursor       = LoadCursor(0, IDC_ARROW);
  if(!RegisterClassEx(&wndcls)) return 0;
  hmain = CreateWindowEx(0, szappname, szappname, WS_OVERLAPPED | WS_VISIBLE | WS_SYSMENU,
                        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                        0, 0, hinst, 0);
  return (hmain != 0);
}

#pragma comment(linker, "/entry:myWinMain")
__declspec(naked) int __stdcall myWinMain()
{
  __asm {
    push    0
    call    dword ptr GetModuleHandle
    mov     hinst, eax
    call    dword ptr InitInstance
    lea     ebp, [esp-28]
    test    eax, eax
    je      short progEXIT
    mov     esp, ebp
    mov     eax, hmain
    mov     esi, GetMessage
    push    SW_NORMAL
    push    eax
    mov     ebx, TranslateMessage
    call    dword ptr ShowWindow
    mov     edi, DispatchMessage
getMSG:
    push    0
    push    0
    push    0
    push    ebp
    call    esi
    test    eax, eax
    je      short progEXIT
    push    ebp
    call    ebx
    push    ebp
    call    edi
    jmp     short getMSG
progEXIT:
    push    0
    call    dword ptr ExitProcess
  }
}

Merci
Mon site internet : http://pistol.petesampras.free.fr

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Pas le temps d'analyser leur appartenance mais pas grave du tout, les composants que le système conserve dans ton espace processus seront évacués par le système lui même si le besoin s'en fait sentir.
Ce sont les threads que tu pourrais créer explicitement qu'il conviendra de bioen gérer.

ciao...
BruNews, MVP VC++
Messages postés
123
Date d'inscription
samedi 14 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2009
1
 __asm {
    push    0
    call    dword ptr GetModuleHandle



C'est quoi cette horreur ?
Déjà commencer par coder propement (le Wizard Win32 VC fait ça très bien)
au lieu de mixer du code C et asm non optimisé et vraiment crade.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
"Wizard Win32 VC"
tu as vu un wizzard faire du 'sans CRT' ?

asm non optimisé pour un PUSH 0, elle est nouvelle celle là...

Je ne vois aucun mixage de code ici, les blocs sont full ASM ou full C.

User son clavier à polluer un post et nous déranger, on s'en passait largement.

ciao...
BruNews, MVP VC++
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Merci Brunews d'avoir prit le temps de me répondre.

Jeffy>>Tu fais partie, avec Miquel75, des personnes qui me font le plus rire sur ce forum...

A+
Mon site internet : http://pistol.petesampras.free.fr