Bonjour à tous,

Je dois développer une fonction d'impression pour une application C++/ MFC de type CWinApp mais sans SDI ou MDI, je n'ai donc pas de CView associé à mon objet CMainFrame.
Pour illustrer mes propos, la méthode OnCreate:

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
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
 
	// create a view to occupy the client area of the frame
	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
	{
		TRACE0("Failed to create view window\n");
		return -1;
	}
 
        ......ETC......
}
L'objet m_wndView est un objet OpenGL héritant de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public CWnd, public OGLViewport
J'ai trouvé sur mon forum préféré de quoi imprimer ma fenêtre avec la méthode CopyWindowToBitmap(pWnd,true) et PrintBmp(pBmp) mais CopyWindowToBitmap(CWnd*, bool) prend un pointeur sur un CWnd en paramètre donc j'imprime la fenêtre globale : "active area" (scène OpenGL) et menu, bar d'outils & cie.....
Or je dois absolument imprimer uniquement la partie "active area" de ma fenêtre (le dessin OpenGL), pas de menu ni barre d'outils & cie.
Le code travaille bien avec pWnd->GetClientRect(&rectClient) mais je récupère quand même les menus, bar d'outils & cie.

Comment puis-je récupérer les coordonnées de l'active area (la seule partie cliente de la fenêtre) d'un objet Cwnd?
Est-ce possible?


Merci pour votre aide,
ca fait des heures que je parcours les forums et le web en vain....
Bonne journée à tous.