Accueil > Forum > > > > [MFC] Probleme de récupération de HDC
[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
|
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.
|
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|