CWinApp/CMainFrame sans CView : comment récupérer l'active area de ma fenêtre?
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:
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:
public CWnd, public OGLViewport
J'ai trouvé sur mon forum préféré :P 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.