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 :

Projet boite de dialogue et fen�tre pop-up


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    56
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Par d�faut Projet boite de dialogue et fen�tre pop-up
    Bonjour � tous ,

    j'ai r�cup�r� un projet MFC de type boite de dialogue, l'ensemble fonctionnant bien.

    Je veux rajouter une fonctionnalit� :
    un bouton "Afficher" sur le dialogue principal qui lorsque l'on clique dessus fait apparaitre une fen�tre (une CView �a serrait le bon truc je pense).

    Sur celle-ci je veux ensuite pouvoir effectuer des op�rations avec DirectGraphics. En gros il faut juste que la fen�tre s'affiche et que je r�cup�re sont HWND.

    Pour l'instant j'ai �a m'a fonction qui capture l'appui sur le bouton :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    void CTestDlg::OnBnClickedDraw()
    {
    	//création de la fenêtre
    	DirectGraphics* directGraphics(hWnd);
    	directGraphics.draw(param); //fonction publique de DirectGraphics qui dessine dans la fenetre
    }
    et le constructeur de ma classe qui g�re DirectGraphics qui attend :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    DirectGraphics::DirectGraphics(HWND hWnd)
    Le probl�me c'est que je n'arrive pas � afficher une fen�tre (CWnd, CView ou autre) qui s'affiche (certain code compile mais rien ne marche).

    Si quelqu'un pouvait m'indiquer des pistes �a serait sympa

    Infos :
    Je ne peux pas changer de type de projet (pas de SDI ou de MDI).
    Je suis sous VS2005.
    Mon code DirectGraphics importe peu, d�j� si j'arrivai a voir une fen�tre apparaitre ...
    Est-ce une piste ?

    Merci

  2. #2
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    Je te conseillerai plut�t de faire une CDialog que tu feras s'afficher � l'aide de la m�thode DoModal().

  3. #3
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    56
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Par d�faut
    Du genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	CViewDlg* view = new CViewDlg();
    	HWND hWnd = view->GetSafeHwnd();
    	view->DoModal();
     
     
    	DirectGraphics* directGraphics(hWnd);
    	directGraphics.draw(param)
    ?

    J'y ai pens� mais est-ce que c'est pertinent pour apr�s travailler avec directX ?

    Edit : d'ailleurs plutot mettre �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    	DirectGraphics* directGraphics(hWnd);
    	directGraphics.draw(param
    dans le CViewDlg::OnInitDialog()

  4. #4
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    56
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Par d�faut
    D�soler pour le UP, mais je suis bloqu�

    Est-ce que quelqu'un � d�j� utilis� DirectGraphics sur un CDialog ? Ou du moins aurait une id�e de comment faire ?!

    Parce qu'en r�cup�rant juste le handle du CDialog et en le passant � DirectGraphics j'arrive pas � faire afficher quoi que ce soit (� vrai dire la fen�tre ne s'ouvre m�me pas).

  5. #5
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 538
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 538
    Par d�faut
    DirectGraphics* directGraphics(hWnd);
    directGraphics.draw(param)
    euh juste une chose c'est vraiment bizarre que tu n'aies pas d'erreur � la compilation ou bien je ne maitrise pas assez les subtilit�s du C/C++
    Sur celle-ci je veux ensuite pouvoir effectuer des op�rations avec DirectGraphics. En gros il faut juste que la fen�tre s'affiche et que je r�cup�re sont HWND.
    Que veux-tu faire avec D3d ? Je ne sais pas si on peut faire un rendu dans une fen�tre type dialogue.
    Regarder dans le SDK de Direct X il y a des exemples avec MFC me semble-t-il

    regarder dans le SDK l'exemple
    Samples\C++\DXUT\Optional et le fichier DXUTsettingsdlg.cpp notamment.
    C'est un projet MFC

  6. #6
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    56
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Par d�faut
    Bon finalement j'arrive � afficher dans un CDialog, m�me si je suis pas s�r que se soit tr�s "safe" ...

    Je suis pass� par un dialogue non modale et j'ai travaill� dessus comme si c'�tait un CWnd classique.

    J'ai quelques bugs, notamment d'affichage en fen�tr� avec la boite de dialogue appelante, mais c'est suffisant dans mon cas, et je verrai en fonction de mon temps pour corriger �a.

    Voila mon code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    class directGraphics : public CDialog {
    public:
    	directGraphics(HWnd hwnd);
     
    private:
    	LPDIRECT3D9 m_pD3D9;
    	LPDIRECT3DDEVICE9 m_pD3D9Device;
    	D3DPRESENT_PARAMETERS m_D3D9PresentParameters;
    	IDirect3DVertexBuffer9* m_pD3D9VertexBuffer;
     
    private:
    	virtual BOOL OnInitDialog();
    	HRESULT init(HWND hWnd);
    	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    	HRESULT update();
    	HRESULT render();
     
    }
     
     
    	m_d3d = new directGraphics(m_strBINPath,m_sendSpeed,&m_dSendProg);
    	m_d3d->Create(directGraphics::IDD, this);
    	m_d3d->ShowWindow(SW_SHOW);
    En conclusion je dirais que DirectX c'est pas le plus pratique � commencer, la doc est pas un exemple de simplicit� et les tuto' du web sont tr�s orient� 3D (alors quand on commence et qu'on veut pas faire de 3D, c'est pas simple !).

    Merci pour l'aide, je posterais peut-�tre mon exemple plus complet quand j'aurais stabilis� le truc et que �a tournera nickel.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. projet avec une boite de dialogue comme fen�tre principale
    Par patsolaar dans le forum Windows Mobile
    R�ponses: 1
    Dernier message: 01/02/2008, 00h46
  2. Toolbar dans un projet boite de dialogue
    Par conico dans le forum MFC
    R�ponses: 4
    Dernier message: 11/01/2008, 15h52
  3. [PHP-JS] Boites de dialogue pop-up
    Par boulo dans le forum Langage
    R�ponses: 3
    Dernier message: 16/02/2007, 12h09
  4. R�ponses: 5
    Dernier message: 09/09/2006, 21h30
  5. R�ponses: 3
    Dernier message: 17/06/2004, 16h59

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