IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Passage de 32 en 64 bits


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Passage de 32 en 64 bits
    bonjour, j'ai actuellement un programme 32 bit en c compilé sous visual studio 2010.Il fonctionne correctement, mais des que je le passe en 64 bits,il y a des bugs dans main.c quand on le debogue..Je crée une fenetre MDI avec la commande
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    hWndChild =(HWND) SendMessage (frmMain->hWndClient, WM_MDICREATE,0L,(LPARAM)&mdicreate);
    mdicreate.lParam prend la valeur d'un pointeur, adresse que je retrouve changé en 64 bits dans la procedure de rappel
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LRESULT CALLBACK Main_MDI_Proc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
     
      switch (message)
      {
    		case WM_CREATE:
     
    			if ( (mdic = (LPMDICREATESTRUCT)((LPCREATESTRUCT)lParam)->lpCreateParams) == NULL)
    				return -1;
     
    			frmMainMdi = (S_FRM*)mdic->lParam;
    			if (frmMainMdi == NULL)
    				return -1;

    mdic->lParam en 32 bits est bien égal à mdicreate.lParam mais mdic->lParam prend une valeur differente si bien que j'ai un message violation d'access memoire ce qui est normal.
    Pourquoi lors que je l'execute en 64 bits il me change la valeur ??

    Merci de m'avoir lu.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Bonjours
    J'ai trouvé la solution, il suffit d'enlever la directive de compilation pragma pack(1) dans tous les appels de API Windows, et de transformer tous les cast (long) en (LPARAM).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 22
    Dernier message: 02/07/2009, 17h43
  2. Passage en Long mode (64 bits mode) par AMD
    Par Belegkarnil dans le forum Programmation d'OS
    Réponses: 2
    Dernier message: 07/11/2008, 17h48
  3. Passage de l'asm 16 bits en 32 bits
    Par HacKSpideR dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 09/07/2007, 13h50
  4. Réponses: 4
    Dernier message: 22/01/2007, 18h12
  5. 256 passages dans une boucle 8 bit
    Par petitours dans le forum C
    Réponses: 5
    Dernier message: 09/02/2006, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo