begin process at 2012 02 13 13:48:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

GUI

 > 

ShowHTMLDialogEx + HTMLDLG_MODELESS modale ?!


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

ShowHTMLDialogEx + HTMLDLG_MODELESS modale ?!

dimanche 31 mai 2009 à 20:12:11 | ShowHTMLDialogEx + HTMLDLG_MODELESS modale ?!

HeavenForsaker

Bonjour,

Je tente d'afficher une page HTML à l'intérieur d'une fenêtre, pour ce faire j'ai utilisé la fonction ShowHTMLDialogEx avec le flag HTMLDLG_MODELESS (identique à ShowModelessHTMLDialog) et j'obtiens un résultat pour le moins surprenant, à savoir que la fonction s'exécute correctement (la page HTML s'affiche) mais la fonction ne rend jamais la main au thread appellant !
La fonction ShowHTMLDialogEx se comporte donc comme une fonction modale à la différence qu'elle ne rends jamais la main au thread appellant même lorsqu'on ferme la page HTML.
J'ai également fait le test en utilisant la fonction ShowModelessHTMLDialog et j'obtiens le même résultat.

PS:
modale = bloquante
modeless = non bloquante

Sur MSDN on peut lire :
"This function creates a modeless dialog box that contains HTML. The function does not return until the dialog box has been dismissed.
...
Modal dialog boxes created by this method are synchronous; that is, the call to ShowHTMLDialogEx does not return until the dialog box closes. Modeless dialog boxes created by this method are asynchronous; that is, the dialog box is created in a separate process, and the call to ShowHTMLDialogEx returns before the dialog box closes."

Voici le code :
---------------------------------------------------------------------------------
    CoInitializeEx(0, COINIT_MULTITHREADED);

    HINSTANCE hinstMSHTML = LoadLibrary(_TEXT("MSHTML.DLL"));
    if (hinstMSHTML == NULL)
       return;

    SHOWHTMLDIALOGEXFN* pfnShowModelessHTMLDialog;
    pfnShowModelessHTMLDialog = (SHOWHTMLDIALOGEXFN*)GetProcAddress(hinstMSHTML, "ShowHTMLDialogEx");
    if (pfnShowModelessHTMLDialog)
    {
        IMoniker *pURLMoniker;
        BSTR bstrURL = SysAllocString(L"C:\\doc.html");
        CreateURLMoniker(NULL, bstrURL, &pURLMoniker);
        if (pURLMoniker)
        {
            DWORD dwFlags = HTMLDLG_MODELESS | HTMLDLG_VERIFY;
            HRESULT hres = (*pfnShowModelessHTMLDialog)(hwndParent, pURLMoniker, dwFlags, NULL, NULL, NULL);
            pURLMoniker->Release();
        }

        if (bstrURL)
            SysFreeString(bstrURL);
    }

    FreeLibrary(hinstMSHTML);

    CoUninitialize();




lundi 1 juin 2009 à 11:20:05 | Re : ShowHTMLDialogEx + HTMLDLG_MODELESS modale ?!

HeavenForsaker

Réponse acceptée !
J'ai trouvé, il faut virer CoInitializeEx(0, COINIT_MULTITHREADED); et CoUninitialize();


Cette discussion est classée dans : fonction, dialog, modeless, showhtmldialogex, htmldlg


Répondre à ce message

Sujets en rapport avec ce message

How do I create a modeless dialog in a DLL? [ par dev2004 ] Originally posted by: H I have an MFC C++ dll, which is called from a C executable. I can create a modal dialog just fine, but I'm having trouble gett dialog box avec edit ? [ par pruv3750 ] salutJe travail avec visual studio .net, et j'aimerais savoir s'il existe une fonction pour affichier une boite de dialogue avec un edit box a l'inter Dialog MFC d'une DLL dans une application non MFC [ par auwel ] Voilà j'ai une dll (MFC partagée) qui contient une fonction permettant l'affichage d'une boîte de dialogue. Cette fonction fonctionne correctement si Fonction _T(); [ par d4M13N ] Bonjour,Je suis en train de faire un petit programme en C++ Application Windows Form sous Microsoft Visual Studio 2005.Je suis bloqué sur une malheure GetLayeredWindowAttributes et Windows 2000 [ par Xaviou ] Bonjour à tous.J'ai un petit soft qui tourne actuellement sur différentes machines, dont certaines encore équipées de Windows 2000.A un moment donné, Fonction Sauv/Charg [ par LyoNell ] Bonjour tout le monde !! Voila je suis en Tpe en 1ère S-SI et on fait un trivial pursuit et on aimerait que le joueur puisse sauvegarder et charger un Hook WH_CBT et GetDlgItem [ par Booster ] Bonjour à tous,J'ai un problème avec la fonction GetDlgItem (Qui retourne tous le temps 0) lorsque je suis dans ma fonction de callback de mon hook je fonction system() accès refusé [ par fratleym ] Bonjour,oui je sais, la fonction system() c'est horrible mais bon là, je l'utilise surtout pour que ceux qui reprendront le code sachent à peu près ce Exécuter une fonction transmise en paramètres [ par ndubien ] Bonjour, Comment exécuter une fonction transmise en paramètre à une autre, exemple: void LancerFonction(LPTHREAD_START_ROUTINE fx){ // Lançons fx avec Foncton qui retourne un tableau [ par sarcipus ] Bonjour à tous,dans le programme sur lequel je travaille, j'aurais besoin qu'une fonction retourne un tableau multidimensionnel (dont je ne peux conna


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,948 sec (3)

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