亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fedit.cpp

?? jedit 一個(gè)小型java編譯器的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
/******************************************************************************\
*
*  文件名:    FEdit.cpp
*  目的:	  FEdit類的實(shí)現(xiàn)文件,關(guān)于函數(shù)用法,請(qǐng)參見FWindow.h
*  使用說明:  FEdit類是對(duì)FString的Windows實(shí)現(xiàn),F(xiàn)的用意是指Free
*			  即任何人都可以修改它為己所用。
*			  在保持此程序完整性的情況下,你可以任意傳播它。你也可以修改它
*			  來為你服務(wù),如果你要將此程序用于商業(yè)目的,請(qǐng)告知我。
*
*  CopyLeft	 2003  張?jiān)?*
*  CopyLeft 是自由軟件基金會(huì)(FSF)推薦使用的自由軟件的標(biāo)志
*
\******************************************************************************/
#include<windows.h>
#include<tchar.h>
#include<commctrl.h>
#include"fedit.h"

bool FEdit::IsClassRegistered=false;
HMENU FEdit::hMenu=NULL;
COLORREF FEdit::hTextColor=RGB(0,0,0);
COLORREF FEdit::hBgColor=RGB(255,255,255);
HBITMAP FEdit::hBackGround=NULL;
char FEdit::BGFile[256]="";

LRESULT FEdit::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	POINT point;
	
	switch( uMsg )
	{
		case WM_CREATE:
			InitEdit(hWnd);
			return 0;
		case WM_SIZE:
			OnSize(hWnd);
			return 0;
		case WM_LBUTTONDBLCLK:
			Str.SelectWord();
			InvalidateRect(m_hWnd,NULL,false);
			return 0;
		case WM_LBUTTONDOWN:
			OnLButtonDown(hWnd);
			SendMessage(GetParent(hWnd),WM_LCCHANGED,0l,0l);
			SendMessage(hWnd,WM_LCCHANGED,0l,0l);
			return 0;
		case WM_RBUTTONDOWN:
			if(IsSelEmpty())
			{
				OnLButtonDown(hWnd);
				SendMessage(GetParent(hWnd),WM_LCCHANGED,0l,0l);
				SendMessage(hWnd,WM_LCCHANGED,0l,0l);
				LBDownFlag=false;
			}
			point.x = LOWORD (lParam) ;
			point.y = HIWORD (lParam) ;
			ClientToScreen (hWnd, &point) ;
          
			TrackPopupMenu (GetSubMenu(hMenu,0), TPM_RIGHTBUTTON, point.x, point.y, 
                         0, hWnd, NULL) ;
			return(0);
		case WM_LBUTTONUP:
			ReleaseCapture();
			LBDownFlag=false;
			return 0;
		case WM_LCCHANGED:
			OnLCChanged();
			return 0;
		case WM_TIMER:
			if(LBDownFlag)
			{
				OnMouseMove(hWnd);
				SendMessage(hWnd,WM_LCCHANGED,0l,0l);
			}
			return 0;
		case WM_SETFOCUS:
			CreateCaret(hWnd,NULL,1,cHeight);
			SetCaretPos(X+(Str.GetPos()-1)*cWidth,
				Y+(Str.GetLine()-1)*cHeight);
			ShowCaret(hWnd);
			SendMessage(GetParent(hWnd),WM_LCCHANGED,0l,0l);
			SendMessage(hWnd,WM_LCCHANGED,0l,0l);
			return 0;
		case WM_KEYDOWN:
			OnKeyDown(hWnd,wParam,lParam);
			SendMessage(GetParent(hWnd),WM_LCCHANGED,0l,0l);
			SendMessage(hWnd,WM_LCCHANGED,0l,0l);
			return 0;
		case WM_CHAR:
			HideCaret(hWnd);
			OnChar(wParam,lParam);
			SetCaretPos(X+(Str.GetPos()-1)*cWidth,
				Y+(Str.GetLine()-1)*cHeight);
			ShowCaret(hWnd);
			SendMessage(GetParent(hWnd),WM_LCCHANGED,0l,0l);
			SendMessage(hWnd,WM_LCCHANGED,0l,0l);
			SaveFlag=false;
			return 0;
		case WM_PAINT:
			{
			HideCaret(hWnd);
			SetCaretPos(X+(Str.GetPos()-1)*cWidth,
				Y+(Str.GetLine()-1)*cHeight);
            PAINTSTRUCT ps; 
                
            BeginPaint(hWnd, &ps);
            OnDraw(ps.hdc);
            EndPaint(hWnd, &ps);
			ShowCaret(hWnd);
			}
			return 0;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
			case IDM_UNDO:
				Undo();
				break;
			case IDM_REDO:
				Redo();
				break;
			case IDM_CUT:
				SendMessage(hWnd,WM_COMMAND,IDM_COPY,0L);
				SendMessage(hWnd,WM_COMMAND,IDM_DELETE,0L);
				SendMessage(GetParent(hWnd),WM_LCCHANGED,0,0);
				SendMessage(hWnd,WM_LCCHANGED,0,0);
				break;
			case IDM_COPY:
				CopySel();
				break;
			case IDM_PASTE:
				DeleteSel();
				PasteChar();
				SendMessage(GetParent(hWnd),WM_LCCHANGED,0,0);
				SendMessage(hWnd,WM_LCCHANGED,0,0);
				break;
			case IDM_DELETE:
				DeleteSel();
				SendMessage(hWnd,WM_LCCHANGED,0,0);
				SendMessage(GetParent(hWnd),WM_LCCHANGED,0,0);
				break;
			case IDM_TIMEDATE:
				InsertTimeDate();
				break;
			case IDM_SELECTALL:
				SelectAll();
				break;
			}
			return 0;
		case WM_HSCROLL:
			OnHScroll(wParam,lParam);
			return 0;
		case WM_VSCROLL:
			OnVScroll(wParam,lParam);
			return 0;
		case WM_PALETTEISCHANGING: // should not happen
			MessageBox(NULL, _T("Hello"), _T("Hi"), MB_OK);
			return 0;
		case WM_DESTROY:
			return 0;
	}

   return DefWindowProc(hWnd, uMsg, wParam, lParam);
}


LRESULT CALLBACK FEdit::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	FEdit * pWindow;
        
	if ( uMsg==WM_NCCREATE )
	{   
		assert( ! IsBadReadPtr((void *) lParam, sizeof(CREATESTRUCT)) );
		MDICREATESTRUCT * pMDIC = (MDICREATESTRUCT *) ((LPCREATESTRUCT) lParam)->lpCreateParams;

		pWindow = (FEdit *) (pMDIC->lParam);

		assert( ! IsBadReadPtr(pWindow, sizeof(FEdit)) );
		SetWindowLong(hWnd, GWL_USERDATA, (LONG) pWindow);
	}
	else
		pWindow=(FEdit *)GetWindowLong(hWnd, GWL_USERDATA);

	if ( pWindow )
		return pWindow->WndProc(hWnd, uMsg, wParam, lParam);
	else
		return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

bool FEdit::CreateEx(HINSTANCE hInst,HWND hParent,int x,int y,
					 int width,int height)
{
	if(!RegisterClassEx(hInst))
		return false;

	xPos=x;
	yPos=y;
	Width=width;
	Height=height;

	MDICREATESTRUCT mdic;
	memset(& mdic, 0, sizeof(mdic));
	mdic.lParam = (LPARAM) this;

	m_hWnd=CreateWindowEx(WS_EX_CLIENTEDGE,
		"FEdit",NULL,
		WS_CHILD|WS_BORDER|WS_VSCROLL|WS_HSCROLL,
		x,y,width,height,
		hParent,
		NULL,
		hInst,
		&mdic);
	if(m_hWnd==NULL)
		return false;
	return true;
}

bool FEdit::RegisterClassEx(HINSTANCE hInst)
{
	if(IsClassRegistered)
		return true;

	hMenu = LoadMenu (hInst, MAKEINTRESOURCE(IDM_POPUP));
	SetMenu();
	InitCommonControls();

	WNDCLASSEX wc;
	memset(&wc, 0, sizeof(wc));
	wc.cbSize=sizeof(WNDCLASSEX);
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.hCursor=LoadCursor(NULL,IDC_IBEAM);
	wc.hIcon=NULL;
	wc.hInstance=hInst;
	wc.lpfnWndProc=WindowProc;
	wc.lpszClassName="FEdit";
	wc.lpszMenuName=NULL;
	wc.style=CS_DBLCLKS;
	wc.hIconSm=NULL;
	
	if(!::RegisterClassEx(&wc))
		return false;
	IsClassRegistered=true;
	return true;
}
void FEdit::SetScrollBar(HWND hWnd)
{
	int nMax,nPage,nPos;
	nMax=Str.GetTotalLine();
	nPage=(Height-5)/cHeight;
	nPos=(5-Y)/cHeight+1;
	if(nMax<nPage+(5-Y)/cHeight)
	{
		nMax=nPage+(5-Y)/cHeight;
	}
	if(nPos<1) nPos=1;
	if(nMax<=nPage) EnableScrollBar(hWnd,SB_VERT,ESB_DISABLE_BOTH);
    else
	{
		EnableScrollBar(hWnd,SB_VERT,ESB_ENABLE_BOTH);

		SCROLLINFO si;
		si.cbSize=sizeof(SCROLLINFO);
		si.fMask=SIF_PAGE|SIF_RANGE|SIF_POS;
		si.nMax=nMax;
		si.nMin=1;
		si.nPage=nPage;
		si.nPos=nPos;

		SetScrollInfo(hWnd,SB_VERT,&si,true);
	}
	nPage=(Width-5)/cWidth;
	nMax=Str.GetMaxLineWidth()-1;
	nPos=(5-X)/cWidth+1;
	if(nMax<nPage+(5-X)/cWidth)
	{
		nMax=nPage+(5-X)/cWidth;
	}
	if(nPos<1) nPos=1;
	if(nMax<=nPage) EnableScrollBar(hWnd,SB_HORZ,ESB_DISABLE_BOTH);
    else
	{
		EnableScrollBar(hWnd,SB_HORZ,ESB_ENABLE_BOTH);

		SCROLLINFO si;
		si.cbSize=sizeof(SCROLLINFO);
		si.fMask=SIF_PAGE|SIF_RANGE|SIF_POS;
		si.nMax=nMax;
		si.nMin=1;
		si.nPage=nPage;
		si.nPos=nPos;

		SetScrollInfo(hWnd,SB_HORZ,&si,true);
	}
}

void FEdit::OnDraw(HDC hdc)
{
	RECT rect;
	rect.left=rect.top=0;
	rect.right=Width;
	rect.bottom=Height;
	SelectObject(m_hdcBack,m_BmpBack);
	SelectObject(m_hdcBack,hf);
	FillRect(m_hdcBack,&rect,CreateSolidBrush(hBgColor));
	SetBackGround();
	SetBkMode(m_hdcBack,TRANSPARENT);

	int TotalLine;
	int i,j;
	char c[2];
	bool SelFlag=false;
	TotalLine=Str.GetTotalLine();
	SetBkColor(m_hdcBack,hBgColor);
	SetTextColor(m_hdcBack,hTextColor);
	for(i=1;i<=TotalLine;i++)
	{
		if(Y+i*cHeight<5||Y+i*cHeight>Height)
			continue;
		for(j=1;j<Str.GetLineWidth(i);j++)
		{
			c[0]=Str.GetChar(i,j);
			if(X+j*cWidth<5||X+j*cWidth>Width)
			{
				if(c[0]>=-95&&c[0]<=-2)
					j++;
				continue;
			}
			if(c[0]==0x0d) continue;
			if(c[0]==0x09) c[0]=0x20;
			if(c[0]==0x0a) continue;
			if(Str.IsInSelection(i,j))
			{
				if(!SelFlag)
				{
					SelFlag=true;
					SetBkMode(m_hdcBack,OPAQUE);
					SetBkColor(m_hdcBack,hTextColor);
					SetTextColor(m_hdcBack,hBgColor);
				}
			}
			else
			{
				if(SelFlag)
				{
					SelFlag=false;
					SetBkMode(m_hdcBack,TRANSPARENT);
					SetBkColor(m_hdcBack,hBgColor);
					SetTextColor(m_hdcBack,hTextColor);
				}
			}
			if(c[0]>=-95&&c[0]<=-2)
			{
				c[1]=Str.GetChar(i,++j);
				if(PosInRect(X+(j-2)*cWidth,Y+(i-1)*cHeight))
					TextOut(m_hdcBack,X+(j-2)*cWidth,Y+(i-1)*cHeight,c,2);
			}
			else
				if(PosInRect(X+(j-1)*cWidth,Y+(i-1)*cHeight))
					TextOut(m_hdcBack,X+(j-1)*cWidth,Y+(i-1)*cHeight,c,1);
		}
	}
	BitBlt(hdc,0,0,Width,Height,m_hdcBack,0,0,SRCCOPY);
}
void FEdit::OnChar(WPARAM wParam,LPARAM lParam)
{
	switch(wParam)
	{
	case 0x1b:
		return;
	case 0x0d:
		Str.DeleteSel();
		Str.Insert(0x0a);
		break;
	case 0x09:
		Str.DeleteSel();
		if((Str.GetPos()-1)%4!=0)
			while((Str.GetPos()-1)%4!=0)
				Str.Insert(0x20);
		else
			for(int i=0;i<4;i++)
				Str.Insert(0x20);
		break;
	case 0x08:
		if(!Str.IsSelEmpty())
			Str.DeleteSel();
		else
			Str.DeletePrev();
		break;
	default:
		Str.DeleteSel();
		Str.Insert((char)wParam);
	}
	AdjustCaretPos();
	SetScrollBar(m_hWnd);
	InvalidateRect(m_hWnd,NULL,false);
}
void FEdit::InitEdit(HWND hWnd)
{
	HDC hdc;
	hdc=GetDC(hWnd);
	m_hdcBack=CreateCompatibleDC(hdc);
	m_BmpBack=NULL;
	ReleaseDC(hWnd,hdc);
}
void FEdit::OnSize(HWND hWnd)
{
	RECT rect;
	HDC hdc;
	hdc=GetDC(hWnd);
	GetClientRect(hWnd,&rect);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久久免费精品国产| 国产一区二区三区四区在线观看| 欧美日韩亚洲丝袜制服| 综合久久久久久| 在线电影一区二区三区| 国产乱码一区二区三区| ...av二区三区久久精品| 在线免费一区三区| 激情五月激情综合网| 亚洲欧美视频在线观看视频| 日韩欧美国产麻豆| 色噜噜夜夜夜综合网| 亚洲gay无套男同| 久久精品网站免费观看| 欧美美女网站色| 成人va在线观看| 美腿丝袜在线亚洲一区| 久久一区二区三区四区| 欧美在线不卡视频| 国产成人av资源| 免费观看30秒视频久久| 亚洲精品视频一区二区| 国产亚洲一区二区三区四区| 欧美美女黄视频| 色婷婷久久99综合精品jk白丝| 国产曰批免费观看久久久| 图片区日韩欧美亚洲| 国产精品沙发午睡系列990531| 日韩欧美国产高清| 欧美性高清videossexo| av一区二区久久| 国产一区高清在线| 久久99精品网久久| 高清免费成人av| 经典三级视频一区| 麻豆传媒一区二区三区| 日韩黄色小视频| 日韩成人av影视| 日本不卡高清视频| 日本不卡一二三| 精品一区二区影视| 激情五月婷婷综合| 国产老妇另类xxxxx| 国产一区二区看久久| 国产成人一区在线| 成人av资源在线观看| av电影天堂一区二区在线观看| 9色porny自拍视频一区二区| 91最新地址在线播放| 91福利资源站| 91精品国产综合久久小美女| 日韩一区二区不卡| 精品国产乱码久久久久久图片| 欧美成人乱码一区二区三区| 久久久久久日产精品| 国产精品久久二区二区| 一区二区三区日本| 日本成人超碰在线观看| 国产一区二区女| 91在线国产观看| 欧美亚洲国产一区二区三区| 91精品国产综合久久久久久久久久 | 精品国产一区二区在线观看| 欧美va日韩va| 国产精品久线观看视频| 一区二区三区在线影院| 日韩电影在线免费看| 韩国女主播一区| 99久久国产综合色|国产精品| 欧美亚洲高清一区| 精品美女在线观看| 亚洲乱码国产乱码精品精可以看| 性做久久久久久免费观看| 国产真实精品久久二三区| 99免费精品在线| 欧美精品 国产精品| 欧美国产日韩在线观看| 亚洲成a人片在线观看中文| 国产综合久久久久影院| 色婷婷精品久久二区二区蜜臂av| 日韩欧美一级片| 成人免费在线播放视频| 免费看欧美美女黄的网站| 不卡电影免费在线播放一区| 欧美老女人在线| 国产精品久久久久桃色tv| 视频在线在亚洲| 成熟亚洲日本毛茸茸凸凹| 91麻豆精品国产91久久久资源速度| 久久精品在线免费观看| 日韩一区欧美二区| 91女神在线视频| 精品成人佐山爱一区二区| 亚洲国产日韩a在线播放| 国产在线视频精品一区| 欧美日韩另类一区| 欧美激情一区二区三区不卡| 国产成a人亚洲精| 欧美一卡二卡三卡四卡| 亚洲精品日产精品乱码不卡| 国产在线精品一区二区| 3atv一区二区三区| 亚洲欧洲综合另类| 国产成人av资源| 精品国产一区二区三区忘忧草| 亚洲一区在线视频| 成人午夜看片网址| 日韩欧美国产综合在线一区二区三区 | 精品国产免费一区二区三区四区| 亚洲最快最全在线视频| 国产成人精品午夜视频免费| 日韩欧美在线123| 亚洲成人资源在线| 色综合天天性综合| 蜜桃视频一区二区三区在线观看| 99精品国产热久久91蜜凸| 精品久久久久久久久久久久久久久久久 | 91国产成人在线| 中文字幕一区二区三区在线观看| 国产一区二区三区电影在线观看| 欧美一级黄色大片| 日产国产高清一区二区三区| 在线看一区二区| 亚洲精品国产成人久久av盗摄| av在线不卡免费看| 国产日韩高清在线| 国产乱淫av一区二区三区| 欧美大度的电影原声| 日本vs亚洲vs韩国一区三区| 欧美日韩国产综合一区二区 | 日韩无一区二区| 青青草精品视频| 日韩一区二区免费电影| 午夜视频一区在线观看| 欧美三级午夜理伦三级中视频| 夜夜揉揉日日人人青青一国产精品| 99久久99久久综合| 亚洲精选视频在线| 色久综合一二码| 亚洲电影第三页| 91精品国产综合久久精品性色| 天堂成人国产精品一区| 欧美一卡二卡三卡| 精品一区二区三区日韩| 久久久午夜精品理论片中文字幕| 国产成人午夜电影网| 国产精品美女久久久久av爽李琼 | 久久精品在这里| 成人亚洲一区二区一| 亚洲视频每日更新| 欧美性生活久久| 日韩福利电影在线| 久久久久久久综合日本| 日韩欧美综合在线| 久久99精品久久只有精品| 久久综合狠狠综合久久激情 | 日本中文在线一区| 精品国产乱码久久久久久老虎| 激情久久五月天| 日韩一区有码在线| 欧美久久久久久久久久 | 91久久精品午夜一区二区| 亚洲福利视频一区| 日韩精品一区二区三区四区视频| 国产91精品露脸国语对白| 樱桃视频在线观看一区| 日韩天堂在线观看| 成人av午夜电影| 五月婷婷激情综合| 久久嫩草精品久久久久| 91丝袜美腿高跟国产极品老师 | 国内精品国产成人国产三级粉色| 国产精品久久久久永久免费观看| 一本色道久久综合亚洲精品按摩| 香蕉久久夜色精品国产使用方法| 精品国精品国产尤物美女| av毛片久久久久**hd| 三级在线观看一区二区| 国产欧美日韩在线观看| 欧美日韩一区小说| 国产精品自拍网站| 亚洲一区日韩精品中文字幕| www日韩大片| 在线观看av不卡| 国产酒店精品激情| 亚洲高清不卡在线观看| 欧美国产日韩在线观看| 91精品国产免费久久综合| 99国产精品久久| 久久国产精品一区二区| 亚洲猫色日本管| 久久精品亚洲麻豆av一区二区| 精品视频在线免费看| 国产成人精品免费看| 秋霞影院一区二区| 亚洲精品乱码久久久久久黑人| 精品粉嫩超白一线天av| 欧美三级资源在线| 91网站在线播放| 国产精品资源在线看|