begin process at 2008 07 20 09:21:05
1 213 150 membres
71 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : GetOpenFileName et Thread générés [WIN32] [ Windows / System ] (Pistol_Pete)

GetOpenFileName et Thread générés [WIN32] le 25/04/2008 16:51:41

Pistol_Pete
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 : [ Lien ]


Re : GetOpenFileName et Thread générés [WIN32] le 25/04/2008 19:44:23

BruNews
(Admin CS)
Réponse acceptée !
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++

Re : GetOpenFileName et Thread générés [WIN32] le 25/04/2008 21:00:34

jeffy131
 __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.

Re : GetOpenFileName et Thread générés [WIN32] le 25/04/2008 21:19:10

BruNews
(Admin CS)
"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++

Re : GetOpenFileName et Thread générés [WIN32] le 25/04/2008 22:21:59

Pistol_Pete
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 : [ Lien ]



Classé sous : push, call, ofn, eax, wndcls

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS