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:
L'objet m_wndView est un objet OpenGL héritant de :
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...... }
J'ai trouvé sur mon forum préféré
Code : Sélectionner tout - Visualiser dans une fenêtre à part public CWnd, public OGLViewportde 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.
Partager