Impression d'une dialogbox

Le
Frd
Bonjour


je souhaite envoyer le contenu de plusieurs dialogbox dans un buffer image.
Les dialogbox ne sont pas affichées à l'écran.
Pour ça, j'ai donc créé un bitmap et un device context (pDC) et je
parcours les dialogbox une à une

char szClass[255];

CWnd* pWnd = pDlg->GetWindow(GW_CHILD);

GetClassName(pWnd->m_hWnd,szClass,255);
DWORD dwStyle = pWnd->GetStyle();

if( strcmp(szClass,"Static")==0 )

//si c'est du texte pas de problème
pDC->DrawText(csTxt,);

//mais quand c'est une image
if ((dwStyle & SS_BITMAP) == SS_BITMAP)
je n'arrive pas à avoir la main sur l'image.

Si je pouvais récupérer le numéro de la ressource qq part ça m'irait,
mais je sais pas comment récupérer cette valeur, doit bien y avoir une
fonction proche du GetClassName et du GetStyle mais je la trouve pas.

Comment qu'on fait ?

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #23286941
Frd a écrit :

je souhaite envoyer le contenu de plusieurs dialogbox dans un buffer image.
Les dialogbox ne sont pas affichées à l'écran.
Pour ça, j'ai donc créé un bitmap et un device context (pDC) et je
parcours les dialogbox une à une
char szClass[255];
CWnd* pWnd = pDlg->GetWindow(GW_CHILD);
GetClassName(pWnd->m_hWnd,szClass,255);
DWORD dwStyle = pWnd->GetStyle();
if( strcmp(szClass,"Static")==0 )

//si c'est du texte pas de problème
pDC->DrawText(csTxt,...);

//mais quand c'est une image
if ((dwStyle& SS_BITMAP) == SS_BITMAP)
je n'arrive pas à avoir la main sur l'image.



WM_PRINTCLIENT
Frd
Le #23293071
Le 15/04/2011 17:19, Christian ASTOR a écrit :

je souhaite envoyer le contenu de plusieurs dialogbox dans un buffer image.
Les dialogbox ne sont pas affichées à l'écran.
Pour ça, j'ai donc créé un bitmap et un device context (pDC) et je
parcours les dialogbox une à une
char szClass[255];
CWnd* pWnd = pDlg->GetWindow(GW_CHILD);
GetClassName(pWnd->m_hWnd,szClass,255);
DWORD dwStyle = pWnd->GetStyle();



WM_PRINTCLIENT




Salut

quand je fais
SendMessage(pWnd->m_hWnd, WM_PRINTCLIENT, (WPARAM) pDC->m_hDC,
PRF_CLIENT );

ou même

pWnd->PrintClient(pDC, PRF_CLIENT);

le bitmap est bien affiché, mais il apparait en 0,0 du device context.
Et un
pDC->MoveTo(x, y);
n'y change rien...

Merci pour la piste
Christian ASTOR
Le #23293061
Frd a écrit :

Salut

quand je fais
SendMessage(pWnd->m_hWnd, WM_PRINTCLIENT, (WPARAM) pDC->m_hDC,
PRF_CLIENT );

ou même

pWnd->PrintClient(pDC, PRF_CLIENT);

le bitmap est bien affiché, mais il apparait en 0,0 du device context.
Et un
pDC->MoveTo(x, y);
n'y change rien...



Oui, normal, MoveTo() n'est pas fait pour ça.
On envoie WM_PRINTCLIENT dans un Memory DC, où on le triture comme on
veut, et on le blitte au final par BitBlt() par exemple, vers le HDC final.
Frd
Le #23293101
Le 18/04/2011 16:15, Christian ASTOR a écrit :
Frd a écrit :

Salut

quand je fais
SendMessage(pWnd->m_hWnd, WM_PRINTCLIENT, (WPARAM) pDC->m_hDC,
PRF_CLIENT );

ou même

pWnd->PrintClient(pDC, PRF_CLIENT);

le bitmap est bien affiché, mais il apparait en 0,0 du device context.
Et un
pDC->MoveTo(x, y);
n'y change rien...



Oui, normal, MoveTo() n'est pas fait pour ça.
On envoie WM_PRINTCLIENT dans un Memory DC, où on le triture comme on
veut, et on le blitte au final par BitBlt() par exemple, vers le HDC final.



Je vois.

Mais j'ai trouvé un tantinet plus simple

CPoint oldPoint = pDC->SetViewportOrg(x, y);
pWnd->PrintClient(pDC, PRF_CLIENT);
pDC->SetViewportOrg(oldPoint);

ça fait exactement ce que je veux !

Merci à toi.
Frd
Le #23294691
Le 18/04/2011 16:24, Frd a écrit :
Oui, normal, MoveTo() n'est pas fait pour ça.
On envoie WM_PRINTCLIENT dans un Memory DC, où on le triture comme on
veut, et on le blitte au final par BitBlt() par exemple, vers le HDC final.



Je vois.

Mais j'ai trouvé un tantinet plus simple

CPoint oldPoint = pDC->SetViewportOrg(x, y);
pWnd->PrintClient(pDC, PRF_CLIENT);
pDC->SetViewportOrg(oldPoint);

ça fait exactement ce que je veux !

Merci à toi.



Bon ben c'est pas encore gagné !
Pour l'export dans une image ça fonctionne, mais pour envoyer vers un
PrinterDC j'ai encore un petit problème de positionnement.
Publicité
Poster une réponse
Anonyme