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

📄 lalabel.cpp

📁 Lakey这是一个免费的CW练习/收/发软件
💻 CPP
字号:
#include "StdAfx.h"
#include "LaLabel.h"

#include <assert.h>

CLaLabel::CLaLabel(IPaintableParent* pParent, const RECT* pRect, const char* pText, int nStyle, CFont* pFont/* = NULL */, const char* pMutexName/* = NULL */)
{
	m_pParent = pParent;
	m_oRect = *pRect;
	m_pFont = pFont;

	if (pText)
	{
		strncpy(m_vText, pText, MAX_LABEL_TEXT_LEN);
		m_vText[MAX_LABEL_TEXT_LEN] = '\0';
	}
	else
		m_vText[0] = '\0';

	m_nStyle = nStyle;

	m_hMutex = (pMutexName ? CreateMutex(NULL, FALSE, pMutexName) : NULL);
}

CLaLabel::~CLaLabel(void)
{
}

BOOL CLaLabel::IsRelated(int x, int y)
{
	return IControl::PointInRect(&m_oRect, x, y);
}

void CLaLabel::GetRect(RECT* r)
{
	*r = m_oRect;
}

void CLaLabel::OnPaint(void* owner, CGraphics* g, const RECT* pRect)
{
	RECT r = m_oRect;
	OffsetRect(&r, -r.left, -r.top);
	g->SetFont(m_pFont);
	g->DrawText(&r, m_vText, m_nStyle);
}

void CLaLabel::SetText(const char* pText)
{
	if (pText)
	{
		strncpy(m_vText, pText, MAX_LABEL_TEXT_LEN);
		m_vText[MAX_LABEL_TEXT_LEN] = '\0';
	}
	else
		m_vText[0] = '\0';

	m_pParent->Invalidate(&m_oRect);
}

void CLaLabel::GetText(char* pText, int nSize)
{
	strncpy(pText, m_vText, nSize);
}

const char* CLaLabel::GetText()
{
	return (const char *)m_vText;
}

BOOL CLaLabel::PushChar(char ch)
{
	assert(m_hMutex);
	BOOL r = FALSE;

	if (WAIT_OBJECT_0 == WaitForSingleObject(m_hMutex, 1000L))
	{
		for (int i = 0; i < MAX_LABEL_TEXT_LEN; ++i)
		{
			if (!m_vText[i])
			{
				m_vText[i] = ch;
				m_vText[i + 1] = '\0';
				r = TRUE;
				break;
			}
		}
		ReleaseMutex(m_hMutex);
		m_pParent->Invalidate(&m_oRect);
	}

	return r;
}

char CLaLabel::PopChar()
{
	assert(m_hMutex);

	char r = '\0';
	if (WAIT_OBJECT_0 == WaitForSingleObject(m_hMutex, 1000L))
	{
		r = m_vText[0];
		for (int i = 0; i < MAX_LABEL_TEXT_LEN; ++i)
		{
			if (m_vText[i])
				m_vText[i] = m_vText[i + 1];
			else
				break;
		}

		ReleaseMutex(m_hMutex);
		m_pParent->Invalidate(&m_oRect);
	}

	return r;
}

⌨️ 快捷键说明

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