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

📄 keyboarddlg.cpp

📁 蓝天盲人电脑软件
💻 CPP
字号:
// KeyBoardDlg.cpp : implementation file
//

#include "stdafx.h"
#include "BlueSky.h"
#include "KeyBoardDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardDlg dialog


CKeyBoardDlg::CKeyBoardDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CKeyBoardDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CKeyBoardDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CKeyBoardDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CKeyBoardDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CKeyBoardDlg, CDialog)
	//{{AFX_MSG_MAP(CKeyBoardDlg)
	ON_WM_MOUSEMOVE()
	ON_WM_PAINT()
	ON_WM_CTLCOLOR()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_RBUTTONDBLCLK()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CKeyBoardDlg message handlers

void CKeyBoardDlg::OnCancel() 
{
	
	//CDialog::OnCancel();
}

void CKeyBoardDlg::OnOK() 
{
	
}

BOOL CKeyBoardDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	SetWindowPos(NULL,0,0,1024,768,0);
	brush.CreateSolidBrush(RGB(0,120,220));
	ClipWindow();
	pointchar = NULL;
	strImport = "";
	
	return TRUE; 
}


void CKeyBoardDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
	char c=NULL;
	int i,j;
	char a[2];
	a[1] = 0;
	i=(point.x-175)/60;
	j=(point.y-25)/60;
	switch(j)
	{
		case 0: 
			if(i<10)
				c='0'+i;
			else
				c='.';
			break;
		case 1:
			c='A'+i;
			break;
		case 2:
			c='L'+i;
			break;
		case 3:
			if(i<4)
				c='W'+i;
			else{
				if(i==4)  c='@';
				if(i==5)  c='_';
				if(i==6)  c='/';
				if(i==7)  c='\\';
				if(i>7) 
				{
				 //BACK;
					c='~';
				}
			}
			break;
		case 4:
			c='^';
	}	  
	if(c!=pointchar)
	{
		pointchar=c;
		switch(c)
		{
			case '@': 
                eciSpeakText("圈A",0);
				break;
			case '_': 
				eciSpeakText("下划线",0);
				break;
			case '~': 
				eciSpeakText("后退",0);
				break;
			case '.': 
				eciSpeakText("点",0);
				break;
			case '^': 
				eciSpeakText("回车",0);
				break;
			default: 
				a[0] = c;
				eciSpeakText(a,0);
				break;
		}
	}

	CDialog::OnMouseMove(nFlags, point);
}

void CKeyBoardDlg::OnPaint() 
{
	CPaintDC dc(this); 
		
    CPen pen(PS_INSIDEFRAME,5,RGB(0,180,0));
    dc.SelectStockObject(NULL_PEN);
		
	CPen *pOldPen = dc.SelectObject(&pen);
	dc.Rectangle(170,20,840,335);
    CPen pen2(PS_SOLID,1,RGB(0,180,0));
	dc.SelectObject(&pen2);

	for(int i=1; i<11; i++)
	{
	    dc.MoveTo((175+i*60),25);
	    if(i<9)
			dc.LineTo((175+i*60),265);
		else
			dc.LineTo((175+i*60),205);
	}
	for(int j=0; j<4; j++)
	{
	    dc.MoveTo(175,(85+j*60));
		dc.LineTo(835,(85+j*60));
	}
	dc.SetTextColor(RGB(255,0,0));
	dc.SetBkMode(TRANSPARENT);

	CFont font,*pOldFont;
    font.CreatePointFont(300,"楷体_GB2312");
    pOldFont = dc.SelectObject(&font);

	char c='0';
	for(i=0;i<10;i++)
	{
		dc.TextOut(195+i*60,40,c++);
	}
    c='A';
	for(i=0;i<11;i++)
	{
		dc.TextOut(195+i*60,100,c++);
		dc.TextOut(195+i*60,160,c+10);
		if(i<4)
		dc.TextOut(195+i*60,220,c+21);
	}
	dc.TextOut(800,40,'.');
	dc.TextOut(437,220,'@');
	dc.TextOut(495,220,'_');
	dc.TextOut(558,220,'/');
	dc.TextOut(616,220,'\\');
	dc.TextOut(705,220,"BACK");

	dc.TextOut(415,280,"E N T E R");

	dc.SelectObject(pOldPen);
}

HBRUSH CKeyBoardDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	if(pWnd->m_hWnd == m_hWnd)
		return brush;

	return hbr;
}

void CKeyBoardDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	char c=NULL;
	int i,j;
	i=(point.x-175)/60;
	j=(point.y-25)/60;

	switch(j)
	{
		case 0: 
			if(i<10)
				c='0'+i;
			else
				c='.';
			break;
		case 1:
			c='A'+i;
			break;
		case 2:
			c='L'+i;
			break;
		case 3:
			if(i<4)
				c='W'+i;
			else
			{
				if(i==4)  c='@';
				if(i==5)  c='_';
				if(i==6)  c='/';
				if(i==7)  c='\\';
				if(i>7) 
					c='~';
			}
			break;
		case 4:
			//CDialog::OnOK();//Enter;
			break;
	}	  

	if(c!=NULL)
	{
		if(c!='~')
		{
	    	switch(c)
			{
	    		case '@': 
					eciSpeakText("圈a已输入",0);
		    		break;
		    	case '_':  
					eciSpeakText("下划线已输入",0);
		    		break;
		       	case '.': 
					eciSpeakText("点已输入",0);
		    		break;
		    	default: 
			    	CString str;
			    	str.Format("%c已输入",c);
					eciSpeakText(str,0);
				    break;
			}
			strImport += c;
		}
		else
		{
		    int len = strImport.GetLength();
			if (len < 1)
				eciSpeakText("已清空",0);
			else
			{
				strImport = strImport.Left(-1);
		    	eciSpeakText("已后退",0);
			}
		}
	}

	CDialog::OnLButtonDblClk(nFlags, point);
}

void CKeyBoardDlg::ClipWindow()
{
    CRect rec(170,20,840,335);
	ClipCursor(&rec);
}

void CKeyBoardDlg::OnRButtonDblClk(UINT nFlags, CPoint point) 
{
	CDialog::OnCancel();
	CDialog::OnRButtonDblClk(nFlags, point);
}

void CKeyBoardDlg::WriteProfile(CString strSection,CString strStringItem)
{
	CWinApp *pApp = AfxGetApp();
    pApp->WriteProfileString(_T("MailParam"),strSection,strStringItem);
}

⌨️ 快捷键说明

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