⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paramwnd.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
字号:
// ParamWnd.cpp : implementation file
//

#include "stdafx.h"
#include "visualjava.h"
#include "ParamWnd.h"
#include "VisualJavaView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CParamWnd

CParamWnd::CParamWnd()
{
   m_pCurParam = NULL;
}

CParamWnd::~CParamWnd()
{
}


BEGIN_MESSAGE_MAP(CParamWnd, CStatic)
	//{{AFX_MSG_MAP(CParamWnd)
	ON_WM_PAINT()
	ON_WM_NCPAINT()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CParamWnd message handlers

void CParamWnd::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
    CDC mdc;
    CRect rc;
    GetClientRect(&rc);

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

	//draw basic bk
    mdc.FillRect(&rc,&m_brBackground);

    //DrawItems(&mdc);
    dc.BitBlt(0, 0, rc.Width(), rc.Height(), &mdc, 0, 0, SRCCOPY);

    mdc.SelectObject(pOldBm);
    ReleaseDC(&dc);
    bm.DeleteObject();
    mdc.DeleteDC();	// Do not call CStatic::OnPaint() for painting messages
}

void CParamWnd::OnNcPaint() 
{
	CWindowDC dc(this);


	CRect rectClient;
	GetClientRect(rectClient);
	CRect rectWindow;
	GetWindowRect(rectWindow);
	ScreenToClient(rectWindow);
	rectClient.OffsetRect(-rectWindow.left, -rectWindow.top);
	if(rectClient.top<rectClient.bottom && rectClient.top<rectClient.bottom)
		dc.ExcludeClipRect(rectClient);


	// erase parts not drawn
	SendMessage(WM_ERASEBKGND, (WPARAM)dc.m_hDC);

	// draw borders in non-client area
	rectWindow.OffsetRect(-rectWindow.left, -rectWindow.top);

	CRect rcClip;
	dc.GetClipBox(&rcClip);
	CDC mdc;
	mdc.CreateCompatibleDC(&dc);
	CBitmap memBmp;
	memBmp.CreateCompatibleBitmap(&dc,rectWindow.Width(),rectWindow.Height());
    CBitmap* pOldBmp = mdc.SelectObject(&memBmp);

    {
      CBrush cb;
	  cb.CreateSolidBrush(RGB(0,0,255));
	  mdc.FillRect(rectWindow,&cb);
	  cb.DeleteObject();
	  //rectWindow.DeflateRect(0,1,0,1);
	}

	{/*
	  CBrush cb;
	  cb.CreateSolidBrush(m_bMenuBar?GetSysColor(COLOR_3DFACE):
	                                               GuiDrawLayer::GetRGBColorXP());
	  mdc.FillRect(rectWindow,&cb);
	  cb.DeleteObject();*/
	}

    dc.BitBlt (rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(),
					   &mdc, rcClip.left, rcClip.top, SRCCOPY);
	mdc.SelectObject(pOldBmp);
	ReleaseDC(&dc);
	mdc.DeleteDC();
}

int CParamWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CStatic::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	m_pCurFont = new CFont;
    m_pCurFont->CreatePointFont(100,"Times New Roman",GetDC());
	SetFont(m_pCurFont);
	m_brBackground.CreateSolidBrush(RGB(255,255,255));
	return 0;
}

CParamWnd::ParamBlock* CParamWnd::GetParam(CPoint pt)
{
  return NULL;
}

void CParamWnd::OnEdit(UINT nOpCode,CPoint pCursorPos,CString strText /*= _T("")*/)
{
   switch(nOpCode)
   {
      case EDIT_INSERTTEXT:
           if(m_pCurParam)
		   {
			 m_pCurParam->cx++;
		   }else
		   {
			 m_pCurParam = new ParamBlock;
			 m_pCurParam->x = m_pCurParam->cx  = pCursorPos.x;
			 m_pCurParam->y = m_pCurParam->cy  = pCursorPos.y;
             m_pCurParam->cx++;
			 arParams.Add(m_pCurParam);
		   }break;
	  case EDIT_DELETETEXT:

	  case EDIT_BACKSPACE:

      case EDIT_PASTE:

           break;
      case DELIMITER:
	  {
	       ParamBlock* pParam = GetParam(pCursorPos);
		   if(pParam)//if delimiter was entered in a parameter block..then split the param.
		   {
              m_pCurParam = new ParamBlock;
              m_pCurParam->x  =  pCursorPos.x;
			  m_pCurParam->y  =  pCursorPos.y;
              m_pCurParam->cx =  pParam->cx;
			  m_pCurParam->cy =  pParam->cy;
			  pParam->cx = m_pCurParam->cx-1;
			  pParam->cy = m_pCurParam->y;
			  arParams.Add(m_pCurParam);
		   }
		   else
		   if(m_nDelimiterCount<m_nParamCount)//create new parameter
		   {
              // OnEdit(ggg,ggg,ggg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
			   m_pCurParam = new ParamBlock;
               m_pCurParam->x = m_pCurParam->cx  = pCursorPos.x;
			   m_pCurParam->y = m_pCurParam->cy  = pCursorPos.y;
               m_pCurParam->cx++;
			   arParams.Add(m_pCurParam);
		   }
		   else
		   {
			 m_pCurParam = NULL;//refresh
		   }
           break;
	  }default:;
   }
}

void CParamWnd::OnArrowMove(UINT nOpCode,CPoint pCursorPos)
{

}


///////////////////////////////////////////////////////////////////////////////
bool CParamWnd::XPopupCtrlEvent::OnInit ()
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);

    TRACE ("CCodeFinisherListBox::OnInit ()\n");
    pThis->ModifyStyle (0, WS_BORDER, SWP_DRAWFRAME);

    return true;
}

///////////////////////////////////////////////////////////////////////////////
void CParamWnd::XPopupCtrlEvent::OnShow ()
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);

    TRACE ("CCodeFinisherListBox::OnShow ()\n");
    pThis->SetFocus();
}

///////////////////////////////////////////////////////////////////////////////
void CParamWnd::XPopupCtrlEvent::OnHide (bool bAbort)
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);
    TRACE ("CCodeFinisherListBox::OnHide (Abort = %s)\n", bAbort ? "true" : "false");
}
///////////////////////////////////////////////////////////////////////////////
#define IS_DIGIT(c) (c>47&&c<58)

#define IS_IDENTIFIER_SYM(c) ((IS_DIGIT(c))||(c>64&&c<91)||(c>96&&c<123)||(c=='_'))


#define TERM(c) ((!IS_IDENTIFIER_SYM(c)) && ( c != VK_DOWN) && ( c != VK_UP ) && ( c != VK_HOME )\
                 &&( c != VK_END ) && (c != VK_LEFT ) && ( c != VK_RIGHT ) && ( c != VK_CAPITAL ) \
				 &&( c != VK_NUMLOCK ))


///////////////////////////////////////////////////////////////////////////////
int CParamWnd::XPopupCtrlEvent::OnKeyDown (UINT nChar, UINT, UINT)
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);
    if(TERM(nChar))
    {
       return CPopup::end;
    }
	else
	if(char(nChar) == ',')
	{
        CVisualJavaView* pView = (CVisualJavaView*)((CMDIFrameWnd*)AfxGetMainWnd())->GetActiveFrame()->GetActiveView();
       ((CParamWnd*)pThis);

	}
	else //char
	{
       

	}
	return CPopup::doNothing;
}

///////////////////////////////////////////////////////////////////////////////
int CParamWnd::XPopupCtrlEvent::OnLButtonDown (UINT, CPoint pt)
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);
    return CPopup::doNothing;
}

///////////////////////////////////////////////////////////////////////////////
int CParamWnd::XPopupCtrlEvent::OnLButtonUp (UINT, CPoint pt)
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);
    return CPopup::doNothing;
}

//////////////////////////////////////////////////////////////////////////////
int CParamWnd::XPopupCtrlEvent::OnLButtonDblClk(UINT nFlags,CPoint point)
{
    METHOD_PROLOGUE_(CParamWnd, PopupCtrlEvent);
    return CPopup::end;
}

///////////////////////////////////////////////////////////////////////////////
IPopupCtrlEvent* CParamWnd::XPopupCtrlEvent::GetInterfaceOf (HWND)
{
    // Not used here because this control doesn't include other controls
    return NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -