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

MFC Discussion :

[MFC] utilisation de printPreview


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 47
    Par d�faut [MFC] utilisation de printPreview
    bonjour,

    j'utilise un printPreview dans une DLL que j'ai "accroch�e" � un programme principal.
    La conception de la fenetre de preview semble OK, le prog passe dans la proc�dure d'affichage de la fenetre (debug dans les MFC).
    Mais la, rien ne se passe...
    Apr�s examen minutieux, je trouve que la fenetre mere de la printpreview est d�finie comme la fenetre mere de mon appli (donc rien a voir avec ma dll). Conclusion : mon objet qui h�rite de CView permet de cr�er un printpreview tres bien, mais on le voit pas puisque c'est tjrs lui qui garde le focus (il est en plein �cran). Deuxieme demande du printpreview : ca plante : ressource deja allou�e comme on pouvait le prevoir. J'en deduis que la fenetre est bien cr��e (je peux pas le v�rifier car si je quitte ma fenetre de ma DLL, je dois fermer le preview avant sinon -> plant�).

    Apr�s regardage dans le code des MFC, je vois que la fenetre mere des printpreview est d�finie par un appel a AfxGetMainWnd().
    Comment contourner le probleme et faire de "DLLMainWnd" ma fenetre m�re pour ce printpreview??

    Merci d'avance

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    tu preciser ces points :
    le printpreview c'est le mecanisme standard d'impression doc/view ?
    la view qui la demande d'edition elle est dans la DLL ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 47
    Par d�faut
    OK:
    Oui ce doit etre le doc view... Ma classe h�rite de CView... sinon s'il faut d'autres informations pour le v�rifier, dis les moi et je regarde

    Effectivement la view qui demande l'�dition fait partie de la DLL.
    C est d'ailleurs de la que semble provenir le probl�me. car si la DLLs �tait un programme stand alone il prendrait je pense la bonne classe m�re de r�f�rence pour l'apercu avant impression. Le probl�me en gros la, c'est qu'il r�f�rence en classe m�re une classe hors de ma DLL...

    En tout cas merci de t'int�resser � mon cas!

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    re,
    essaye de rajouter :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    avant l'appel de la commande printpreview .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 47
    Par d�faut
    Alors j ai essay� de mettre la lib en static avec ta ligne ... (bonne id�e ceci dit)

    j ai des erreurs de linkage... et j ai pas trop l'habitude de debugger du linking...

    [/quote]
    mfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in Score.obj
    mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in Score.obj
    mfcs42d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in Score.obj
    [/quote]

    J ai aussi deux warnings dans la meme veine...
    fcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in Score.obj; second definition ignored
    mfcs42d.lib(dllmodul.obj) : warning LNK4006: __pRawDllMain already defined in Score.obj; second definition ignored
    ca veut dire quoi exactement? apparemment ca voudrait dire que le passage en static essaye de red�finir le point d'entr�e de la DLL... mais si c est le cas, la fonction planterait syst�matiquement, non?
    : :

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 47
    Par d�faut
    1. d�sol� pour l'erreur de bloc quote avant.

    Voici le point d'entr�e de ma dll : J'ai laiss� les commentaire au cas ou ils pourraient �clairer...

    static AFX_EXTENSION_MODULE ScoreDLL = { NULL, NULL };

    extern "C" int APIENTRY
    DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
    {
    UNREFERENCED_PARAMETER(lpReserved);

    if (dwReason == DLL_PROCESS_ATTACH)
    {
    TRACE0("Score.DLL Initializing!\n");

    if (!AfxInitExtensionModule(ScoreDLL, hInstance))
    return 0;

    // Insert this DLL into the resource chain
    // NOTE: If this Extension DLL is being implicitly linked to by
    // an MFC Regular DLL (such as an ActiveX Control)
    // instead of an MFC application, then you will want to
    // remove this line from DllMain and put it in a separate
    // function exported from this Extension DLL. The Regular DLL
    // that uses this Extension DLL should then explicitly call that
    // function to initialize this Extension DLL. Otherwise,
    // the CDynLinkLibrary object will not be attached to the
    // Regular DLL's resource chain, and serious problems will
    // result.

    new CDynLinkLibrary(ScoreDLL);
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
    TRACE0("Score.DLL Terminating!\n");
    // Terminate the library before destructors are called
    AfxTermExtensionModule(ScoreDLL);
    }
    return 1; // ok
    }

  7. #7
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    re,
    cette macro ne fonctionne pas en statique lib ,reste en shared dll des 2 cotes
    programme + DLL .

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 47
    Par d�faut
    j'ai rien compris

    je suis pas en shared DLL des deux c�t�s l�??
    damned je suis perdu

Discussions similaires

  1. [MFC] Utilisation d'une palette de couleur
    Par Kevgeii dans le forum MFC
    R�ponses: 2
    Dernier message: 01/06/2005, 17h35
  2. [MFC] Utilisation de la classe CSocket
    Par Sh4rk dans le forum MFC
    R�ponses: 3
    Dernier message: 01/06/2005, 16h42
  3. R�ponses: 1
    Dernier message: 10/05/2005, 14h31
  4. [MFC] Utilisation de sockets
    Par keupon dans le forum MFC
    R�ponses: 2
    Dernier message: 28/01/2004, 14h37
  5. [MFC] Utilisation Drivers
    Par LAPLACE dans le forum MFC
    R�ponses: 4
    Dernier message: 21/12/2002, 10h29

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