begin process at 2012 05 29 13:32:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

[MFC] Probleme de récupération de HDC


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

[MFC] Probleme de récupération de HDC

mercredi 12 juillet 2006 à 10:11:06 | [MFC] Probleme de récupération de HDC

phantom_2005


Bonjour à tous

voila je cherche à afficher  un bitmap dans un Picture box (IDC_Cadre) situé sur une fenêtre de dialogue (IDD_PROPPAGE5)

Mes fonctions marchent très bien mais je ne sais pas comment faire pour récupérer le HDC (nécessaire pour l'affichage) de ma fenêtre

--> j'ai essayé avec  HDC hdc = ::GetDC(0);  pour le HDC de l'écran et ca marche très bien


Quelqu'un peut il voler à mon secours??

merci d'avance

--------------------------------------------------------------------------------
Phantom_2005

jeudi 13 juillet 2006 à 14:00:35 | Re : [MFC] Probleme de récupération de HDC

mad_love_disease

Yo, pour récuperer le hDC de ta pictureBox, tu doit passée son Handle en paramètre; le proto de la fonction étant: HDC GetDC( HWND hWnd // handle of window ); Si tu récuperais le handle de l'écran avec getDC(0), c'est parceque windows considerais getDC(NULL), il renvoie la fenetre principale pour eviter des erreurs de mémoires. Pour ce genre de questions, utilise WIN32 Programmer's Reference, qui contient TOUT les protos des fonctions contenu dans Windows.h, un gain de temps considérable. Aller, bon courage et à + Nico
jeudi 13 juillet 2006 à 14:37:13 | Re : [MFC] Probleme de récupération de HDC

phantom_2005


Merci beaucoup,

cependant j'ai un autre probleme maintenant

Pour récupérer le handle de ma fenetre, je fais:

          CadreDest = GetDlgItem(IDD_PROPPAGE5);

Puis pour obtenir un DC de la fenêtre:

          HDC hdc = ::GetDC(CadreDest);

Mais j'obtiens l'erreur suivante:
          cannot convert from 'class CWnd *' to 'struct HWND__ *'
pour la premiere ligne de code

Comment puis je m'en sortir?

Merci d'avance 


 

--------------------------------------------------------------------------------
Phantom_2005

jeudi 13 juillet 2006 à 14:40:19 | Re : [MFC] Probleme de récupération de HDC

phantom_2005


De meme, si je cherche a recuperer le handle de ma Picture box en faisant:

                      CadreDest = GetDlgItem(IDD_PROPPAGE5,IDC_Cadre);


j'obtiens l'erreur:
                     error C2664: 'void __thiscall CWnd::GetDlgItem(int,struct HWND__ ** ) const' : cannot convert parameter 2 from 'const int' to 'struct HWND__ ** '

Peut etre que je m'y prend mal?

--------------------------------------------------------------------------------
Phantom_2005

jeudi 13 juillet 2006 à 15:04:55 | Re : [MFC] Probleme de récupération de HDC

vecchio56

Administrateur CodeS-SourceS
HDC hdc = ::GetDC(GetDlgItem(IDD_PROPPAGE5)->m_hWnd);

_____________________________________
Un éditeur de ressources gratuit pour Windows

jeudi 13 juillet 2006 à 15:05:14 | Re : [MFC] Probleme de récupération de HDC

mad_love_disease

re-salut, même délire, voila le proto de la fonction: HWND GetDlgItem( HWND hDlg, // handle of dialog box int nIDDlgItem // identifier of control ); donc ca nous donne: HWND CadreTest = GetDlgItem(HWND_Dlg,IDC_Cadre); HWND_Dlg étant le handle de ta boite de dialogue (IDD_PROPPAGE5), que tu recupere avec le même procédé avec le Handle de ta fenetre principale si tu en as une, ou NULL. Ca donne HWND HWND_Dlg = getDlgItem(NULL,IDD_PROPPAGES); Tes erreurs proviennent du fait que tu passe un IDC(int) en premier paramètre alors qu'il attends un HWND. Voila les liens de WIN32 REFERENCE (2 part d'un .rar) http://www.codingcrew.de/programmierung/win32hlpdownload.php?teil=1 http://www.codingcrew.de/programmierung/win32hlpdownload.php?teil=2 J'espere que cela va t'aider. PS: CWnd est une structure propre aux classes crées pour visual C++, je te conseille d'utiliser les fonctions de windows.h directement (sous visual toujours), ce sera plus efficace je pense. Nico
jeudi 13 juillet 2006 à 15:22:51 | Re : [MFC] Probleme de récupération de HDC

phantom_2005


Voici mon appli:

******************************************************
void setting::MAJLogo(HBITMAP image)
{
 SIZE Taille, sizeDst;
 HBITMAP NewBmp;
 RECT rcSrc = {0, 0, 0, 0};

//-->methode de  mad_love_disease

// HWND HWND_Dlg = GetDlgItem(NULL,IDD_PROPPAGE5);
// HWND CadreTest = GetDlgItem(HWND_Dlg,IDC_Cadre);

 // HDC hdc = ::GetDC(CadreDest);

//-->méthode de vecchio56
// HDC hdc = ::GetDC(GetDlgItem(IDD_PROPPAGE5)->m_hWnd);

HDC hdc = ::GetDC(0);      // <-- DC de l'écran

/* //Effacement de l'image précédente
 HBITMAP BmpVide, Vide = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),"",IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION);
 sizeDst.cx = 375;
 sizeDst.cy = 150;
 BmpVide = RedimBmp(hdc,Vide,rcSrc,sizeDst);
 DrawBmp(hdc,704,642,BmpVide);
*/
 //Taille de l'image Logo
 Taille = GetBmpSize(image);

 //Taille de l'image résultante
 sizeDst = CalcDim(Taille,375,150);
 m_DimBMP.Format("%d x %d  --  %d x %d",Taille.cx,Taille.cy,sizeDst.cx,sizeDst.cy);

 //Redimensionnement de l'image
 NewBmp = RedimBmp(hdc,image,rcSrc,sizeDst);

 //Affichage de l'image aux coordonnées choisies
 DrawBmp(hdc,0,0,NewBmp);
}
***************************************************************************

Avec la méthode de vecchio56, plus d'erreur mais le programme plante complétement!
Avec la méthode de mad_love_disease, j'ai encore des erreurs de conversions de paramètres.

Je suis vraiment désolé de vous embeter, je sens que je suis pas loin mais je suis débutant et j'ai pas encore les automatismes!

Merci

--------------------------------------------------------------------------------
Phantom_2005

vendredi 14 juillet 2006 à 11:53:40 | Re : [MFC] Probleme de récupération de HDC

mad_love_disease

La méthode de Vechio56 devrait fonctionner normalement. La mienne ne fonctionne pas car getDlgItem doit etre remplacer par getDlgItemInt pour recuperer le handle de IDC_CADRE, enfin je pense. Je pars en vacances dans 2 heures, je n'ai plus trop le temps de t'aider dsl. Cependant, test ça vite fait: CWnd * test=GetDlgItem(IDD_PROPPAGE5); if(!test) { //message d'erreur, le pointeur est null exit; } else { HDC hdc = GetDC(test->m_hWnd,IDC_Cadre); } voila, utilise win32 reference pour voir le type des parmatres des fonctions et ca devrait aller. A bientot; Nico
lundi 17 juillet 2006 à 08:37:33 | Re : [MFC] Probleme de récupération de HDC

phantom_2005


Merci Nico,

c'est pas encore ça, mais je vais creuser!

Bonnes vacances et merci encore

@+

--------------------------------------------------------------------------------
Phantom_2005

samedi 22 juillet 2006 à 23:59:39 | Re : [MFC] Probleme de récupération de HDC

Omeya

Tiens, pour t'aider :)

/////////////////////////////////////////
//Ce bout de code simple mais très lent, permet d'afficher un point blanc en position (1,1)
//du cadre IDC_PICTURE de la boîte de dialogue MAINBOX :
HDC dc = GetDC(GetDlgItem(MAINBOX, IDC_PICTURE));
SetPixel(dc, 1, 1, 0xFFFFFF);
ReleaseDC( GetDlgItem(MAINBOX, IDC_PICTURE), dc );
/////////////////////////////////////////

Tu devrais pouvoir l'adapter sans problème à ton programme.
Toutefois, et j'insiste là-dessus, il est vraiment très lent à l'exécution. C'est à cause de l'instruction SetPixel.
Je te conseillerai de te pencher sur l'instruction SetDIBitsToDevice, apparemment bien plus performante.

1 2

Cette discussion est classée dans : probleme, récupération, mfc, fenêtre, hdc


Répondre à ce message

Sujets en rapport avec ce message

Probleme de HDC [ par Crystalin ] Je cherche a mettre le HDC du desktop de windows ou d'un programme deja lancer ... je travaille sous VC++ et je ne fait pas un MFC ...Je pensé que : G Probleme de HDC [ par Crystalin ] Je cherche a mettre le HDC du desktop de windows ou d'un programme deja lancer ... je travaille sous VC++ et je ne fait pas un MFC ...Mon but c de rem Imprimer un bitmap sans MFC ( API Win32 ) [ par bebel6 ] Bonjour à tous tout d'abord !Alors voila le bin'z :J'aimerais pouvoir imprimer une image avec vsiualc 6 sans l'aide des MFC, j'arrive deja à imprimer Probleme tout bete avec visual c++ 6. et mfc [ par killeroms ] Bonjour a tous,j'ai cree un projet avec visual c++ 6 et en utilisant la mfc !j'ai ajouter un activex pour le besoin de mon application ( au cas ou ça Récupération d'ID de fenêtre enfant [ par amauro ] Bonjour à tous!Comment fait-on pour récupérer l'ID de la fenêtre enfant dans le cas d'une application MDI?Merci d'avance de votre réponse. CDialogBar et MFC [ par phanatic ] Bonjour,j'aimerai utiliser, sur mon application, une boite à outilsqui s'agripperait sur les bords de la fenêtre principale ( comme une bar d'outils). probleme avec projet MFC exe et Visual c++ 6 [ par jardel ] voilà, lorsque je cré un projet MFC exe, visual c++ 6 trouve cette erreur :Cannot open precompiled header file: 'Debug/Draw.pch': No such file or dire Probleme MFC [ par Baygon_Vert ] Voila,je commence a m interesser aux MFC depuis quelques jours, et malgré les heures passées dans la MSDN, je n arrive pas a repondre a un probleme si Probleme avec les MFC [ par pidoumtimo ] Hello tout le monde.Je suis actuellement en stage en angletterre. Mon maitre de stage m'a demandé de dévelloper une application.Je m'y suis collé avec Cacher une fenêtre MFC de la barre des taches [ par MangaII ] Salut !Je cherche a cacher mon appli de la barre des taches ! c'est une appli MFC, je c la cacher, la réafficher, gérer le systray, mais pas chacher l


Nos sponsors


Sondage...

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,640 sec (3)

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