Click here to Skip to main content
15,895,084 members
Articles / Desktop Programming / MFC

A Java Language IDE

Rate me:
Please Sign up or sign in to vote.
4.33/5 (26 votes)
13 May 2004CPOL3 min read 80.7K   3.4K   41  
This is a partially implemented IDE for the Java platform.
// JavaTreeCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "VisualJava.h"
#include "JavaTreeCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CJavaTreeCtrl
IMPLEMENT_DYNAMIC(CJavaTreeCtrl,CTreeCtrl)

CJavaTreeCtrl::CJavaTreeCtrl()
{
  m_brBackground.CreateSolidBrush(RGB(192,192,255));
}

CJavaTreeCtrl::~CJavaTreeCtrl()
{
  m_brBackground.DeleteObject();
}


BEGIN_MESSAGE_MAP(CJavaTreeCtrl, CTreeCtrl)
	//{{AFX_MSG_MAP(CJavaTreeCtrl)	
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
	//ON_WM_NCCALCSIZE()
	ON_WM_ERASEBKGND()
	//ON_WM_PAINT()
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CJavaTreeCtrl message handlers

void CJavaTreeCtrl::OnNcPaint() 
{
    // get window DC that is clipped to the non-client area
    CWindowDC dc(this);

    CRect rcClient, rcBar;
    GetClientRect(rcClient);
    ClientToScreen(rcClient);

    GetWindowRect(rcBar);
    rcClient.OffsetRect(-rcBar.TopLeft());
    rcBar.OffsetRect(-rcBar.TopLeft());

    CDC mdc;
    mdc.CreateCompatibleDC(&dc);
    
    CBitmap bm;
    bm.CreateCompatibleBitmap(&dc, rcBar.Width(), rcBar.Height());
    CBitmap* pOldBm = mdc.SelectObject(&bm);

    // client area is not our bussiness :)


    dc.ExcludeClipRect(rcClient);

    // draw borders in non-client area
    CRect rcDraw = rcBar;
    mdc.FillRect(rcDraw,&m_brBackground);

	
	//rcDraw.DeflateRect(0,0,0,17);
    //mdc.FillRect(rcDraw,&m_brBackground);


	/*
    CPen nPen(PS_SOLID,1,RGB(0,0,0));
	CPen* pOldPen = mdc.SelectObject(&nPen);
	mdc.MoveTo(0,rcDraw.bottom-18);
	mdc.LineTo(0,rcDraw.bottom);
	mdc.SelectObject(pOldPen);
    */
	
	// erase parts not drawn
    //mdc.IntersectClipRect(rcDraw);

    // erase the NC background
	mdc.FillSolidRect(rcDraw,RGB(0,0,0));



    dc.BitBlt(0, 0, rcBar.Width(), rcBar.Height(), &mdc, 0, 0, SRCCOPY);

    ReleaseDC(&dc);

    mdc.SelectObject(pOldBm);
    bm.DeleteObject();
    mdc.DeleteDC();
}

void CJavaTreeCtrl::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
{	
  CTreeCtrl::OnNcCalcSize(bCalcValidRects, lpncsp);
  /**
  CRect rc(lpncsp->rgrc[0]);
  rc.DeflateRect(1,1,1,1);
  LPRECT rt = &lpncsp->rgrc[0];
  *rt = rc;
  **/
}

BOOL CJavaTreeCtrl::PreCreateWindow(CREATESTRUCT& cs) 
{
  cs.style |= WS_CLIPCHILDREN;  	
  return CTreeCtrl::PreCreateWindow(cs);
}

BOOL CJavaTreeCtrl::OnEraseBkgnd(CDC* pDC) 
{
  return TRUE;
}



void CJavaTreeCtrl::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CTreeCtrl::DefWindowProc(WM_PAINT,(WPARAM)dc.m_hDC,0);
	// Do not call CTreeCtrl::OnPaint() for painting messages
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
biography? I am not that old yet.

Comments and Discussions