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

📄 edit.cpp

📁 《OpenGL游戏编程》这本书的配套源码。
💻 CPP
字号:
//========================================================
/**
*  @file      Edit.cpp
*
*  项目描述: 构造游戏引擎
*  文件描述:  编辑框类
*  适用平台: Windows98/2000/NT/XP
*  
*  作者:     WWBOSS
*  电子邮件:  wwboss123@gmail.com
*  创建日期: 2007-07-26	
*  修改日期: 2007-07-26
*
*/ 
//========================================================

#include "stdafx.h"
#include "edit.h"
#include "timer.h"

Edit::Edit(void)
	:m_bFocus(FALSE),m_iCaret(0),m_bReturn(FALSE),m_sNamePos(SPoint2(5,130)),m_bPassword(FALSE),
	m_fDeltaTime(0.f),m_sFontColor(SColor(1.f,1.f,1.f,1.f)),m_sCaretColor(SColor(1.f,1.f,1.f,1.f))
{
	ZeroMemory(m_szText,256);
	m_sColor=SColor(0.f,0.f,0.f,1.f);
	m_sRect=SRect(10,20,400,24);
}


/**\brief
 * 绘制控件
 */
void Edit::OnDraw(void)
{
	//! 调整edit的宽度和高度
	m_sRect.height=16;
	if((m_sRect.width)%16!=2)m_sRect.width-=m_sRect.width%16-16-2;


	//! 确定是否还可以输入
	if( IsActive()&&CInput::GetSysInput()->GetMouse()->ButtonDown(0)&&m_bFocus==FALSE)
	{
		m_bFocus=TRUE; CIme::GetSysIme()->Enable();
	}
	if(!IsActive()&&CInput::GetSysInput()->GetMouse()->ButtonDown(0))
	{
		m_bFocus=FALSE;//CIme::GetSysIme()->Disable();
	}

	SYS_FONT->SetColor(SColor(1.f,0.f,0.f,1.f)/*m_sFontColor*/);
	SYS_FONT->Format(CIme::GetSysIme()->GetImeName());
	SYS_FONT->PrintAt(m_sNamePos.x,m_sNamePos.y);
	SYS_FONT->Format(CIme::GetSysIme()->GetImeInputCompStr());
	SYS_FONT->PrintAt(m_sNamePos.x,m_sNamePos.y-18);

	//! 显示输入
	if(m_bFocus)
	{
		m_iCaret=CIme::GetSysIme()->GetWordCaret();
		if(m_iCaret<=(m_sRect.width/16-1))
		{
			CIme::GetSysIme()->SetReceiveChar(true);
			strcpy(m_szText,CIme::GetSysIme()->GetImeInputResultStr());
		}
		else
		{
			m_iCaret=m_sRect.width/16-1;
			CIme::GetSysIme()->SetReceiveChar(false);
		}

		m_fDeltaTime-=CTimer::GetSysTimer()->m_fTime;
		if(m_fDeltaTime<=0.0f)m_fDeltaTime=1.0f;
		if(m_fDeltaTime<0.5f)
		{
			glColor3f(m_sCaretColor.r,m_sCaretColor.g,m_sCaretColor.b);
			glBegin(GL_LINES);
				glVertex2i(m_sRect.x+1+(m_iCaret+1)*16,m_sRect.y);
				glVertex2i(m_sRect.x+1+(m_iCaret+1)*16,m_sRect.y+m_sRect.height);
			glEnd();
		}

		if(CIme::GetSysIme()->GetReturnState())
		{
			m_bReturn=TRUE;
			CIme::GetSysIme()->Disable();
			CIme::GetSysIme()->Enable();
		}

	}else m_bReturn=FALSE;

	SYS_FONT->SetColor(m_sFontColor);
	if(!m_bPassword)//平常输入状态
	{
		SYS_FONT->Format(m_szText);
		SYS_FONT->PrintAt(m_sRect.x,m_sRect.y);
	}
	else	//输入密码状态时显示"*"
	{
		char str[256];
		size_t  i=strlen(m_szText);
		memset(str,'*',i);
		str[i]='\0';
		SYS_FONT->Format(str);
		SYS_FONT->PrintAt(m_sRect.x,m_sRect.y);
	}
}

⌨️ 快捷键说明

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