begin process at 2012 05 29 06:45:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Exe reste en mémoire (WIN32)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Exe reste en mémoire (WIN32)

dimanche 3 juillet 2005 à 22:00:36 | Exe reste en mémoire (WIN32)

Urgo

Membre Club
Bonsoir à tous,
j'ai encore un soucis lié à la suppression de l'utilisation de la CRT, en indiquant un point d'entrée perso au linker.

Je travaille sous XP et VS 2003, et lorsque je ferme mon exe compilé avec l'option /ENTRY, celui-ci reste en mémoire, je dois le fermer avec Ctrl+Alt+Supp, or sans cette dite option, tout fonctionne...

Voici le code incriminé :

#define _WIN32_WINNT 0x0500
#include <windows.h>

#define IDM_OPEN    40001

HINSTANCE hInst;
HWND hMain, hOpen;
char szFile[MAX_PATH];
char *szAppName = "Test";

int dlgSelectBitmap(HWND hOwner)
{
  OPENFILENAME ofn;
  ofn.lStructSize = sizeof(OPENFILENAME);
  ofn.hInstance = 0; ofn.hwndOwner = hOwner;
  ofn.lpstrFilter = "BITMAP(*.bmp)\0*.bmp\0\0";
    ofn.lpstrFile = szFile;
    ofn.lpstrCustomFilter = ofn.lpstrFileTitle = 0;
  ofn.nFileExtension = ofn.nFileOffset = 0;
  ofn.lCustData = ofn.dwReserved = 0;
  ofn.lpTemplateName = ofn.lpstrInitialDir = ofn.lpstrDefExt = 0;
  ofn.lpfnHook = 0; ofn.pvReserved = 0;
  ofn.nMaxCustFilter = ofn.nMaxFileTitle = 0;
  ofn.FlagsEx = 0;
  ofn.nFilterIndex = 1; ofn.nMaxFile = MAX_PATH;
  ofn.lpstrTitle = "Ouvrir un bitmap";
    ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_DONTADDTORECENT;
  szFile[0] = 0;
  return GetOpenFileName(&ofn);
}

LRESULT CALLBACK AppWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg) {
        case WM_CREATE:   
            hOpen = CreateWindow("BUTTON", "Ouvrir", WS_CHILD | WS_VISIBLE,
                                     8, 8, 100, 30, hWnd, (HMENU)IDM_OPEN, hInst, 0);
            return 0;
        case WM_COMMAND:
            if(LOWORD(wParam) == IDM_OPEN)
                dlgSelectBitmap(hWnd);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0); return 0;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

int InitInstance()
{
  WNDCLASSEX wclsx;
  wclsx.cbSize = sizeof(WNDCLASSEX);
  wclsx.style = 0;
  wclsx.lpfnWndProc = AppWndProc;
  wclsx.cbClsExtra = wclsx.cbWndExtra = 0;
    wclsx.hInstance = hInst;
  wclsx.hIcon = LoadIcon(0, IDI_APPLICATION);
  wclsx.hCursor = LoadCursor(0, IDC_ARROW);
  wclsx.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
  wclsx.lpszMenuName = 0;
  wclsx.lpszClassName = szAppName;
    wclsx.hIconSm = 0;
  if(!RegisterClassEx(&wclsx)) return 0;
  hMain = CreateWindowEx(0, szAppName, szAppName, WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                                                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                                                0, 0, hInst, 0);
    return (hMain != 0);
}

#pragma comment(linker, "/entry:myWinMain")
int __stdcall myWinMain()
//int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int lpCmdShow)
{
    MSG msg;
    hInst = GetModuleHandle(0);
    if(!InitInstance()) return 0;
    ShowWindow(hMain, SW_SHOW);
  while(GetMessage(&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
    return 0;
}

Cela fait quelque temps que je me casse la tête à résoudre ce problème sans succès...

Ciao
Urgo
dimanche 3 juillet 2005 à 22:02:20 | Re : Exe reste en mémoire (WIN32)

Urgo

Membre Club
J'oublais, d'après ce que j'ai pu constater, le problème viendrait de GetOpenFileName(&ofn)...

Urgo
dimanche 3 juillet 2005 à 22:04:22 | Re : Exe reste en mémoire (WIN32)

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
ExitProcess(0) au lieu de return 0, ça forcera le déchargement.

ciao...
BruNews, MVP VC++
dimanche 3 juillet 2005 à 22:10:35 | Re : Exe reste en mémoire (WIN32)

Urgo

Membre Club
En effet...
Merci encore une fois! :)

Urgo


Cette discussion est classée dans : hwnd, return, hinstance, ofn, wclsx


Répondre à ce message

Sujets en rapport avec ce message

Pb sur un ptit bout de prog en DirectX.... [ par Haldwin ] Salut a tous....Voila j'ai deux ptits pbs quand je lance cette appli ci-dessous... (VC++)La première est q'une fois sur deux ma variable hWnd apres le PB EditBox [ par SfyLer ] Bonjour à tous !J'ai créé un scanner de port sous dos, et j'ai commencer a le faire sous windows, j'ai presque fini le seul pb que j'ai c'est que je n Problème de creation d'application en win32 [ par zibo3 ] J'ai un petit soucis, je me lance dans la programmation graphique windows et comme j'ai lu qu'il fallait éviter les MFC, je m'y efforce. Mon premier p Problème de linker dans programme de base. [ par vith17 ] Bonjour,J'ai tapé le code suivant sous Dev-C++. Lorsque je lance la compilation, il me revoie l'erreur suivante :    [Linker error] undefined referenc Help Au secours [ par NAVIE ] Bonjour, j'écris ce message pour un problème que j'ai avec un de mes programmes. Je compile avec DevCpp Version 4.9.9.2 et j'ai crée deux fichiers sou api window [ par ropars ] Bonjour<br interface en c [ par Med2009 ] salut je suis Mohamed un petit développeur en c et qui désire etre le plus grand développeur dans le monde... Je trouve pas le bon code [ par vah bi ] Bonjour à tous , voilà je débute en c et comme editeur j'ai le visual c++.Je  fais actuellement une application avec l'api de visual c++  mais en lang


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales