// KeyBoardDlg.h : 头文件
//

#pragma once
#include "afxwin.h"
#include "MyButton.h"

// CKeyBoardDlg 对话框
class CKeyBoardDlg : public CDialogEx
{
// 构造
public:
CKeyBoardDlg(CWnd* pParent = NULL); // 标准构造函数

// 对话框数据
enum { IDD = IDD_KEYBOARD_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现
protected:
HICON m_hIcon;

// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg void SetFontColorBKcolor(CMyButton &str);
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void RunKeySet(CString str,BOOL &KeyIs);
afx_msg BOOL IsTrue();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
BOOL PreTranslateMessage(MSG* pMsg);
CMyButton m_A;
CMyButton m_Esc;
CMyButton m_F1;
CMyButton m_F2;
CMyButton m_F3;
CMyButton m_F4;
CMyButton m_F5;
CMyButton m_F6;
CMyButton m_F7;
CMyButton m_F8;
CMyButton m_F9;
CMyButton m_F10;
CMyButton m_F11;
CMyButton m_F12;
virtual void OnOK();
CMyButton m_Char;
CMyButton m_1;
CMyButton m_2;
CMyButton m_3;
CMyButton m_4;
CMyButton m_5;
CMyButton m_6;
CMyButton m_7;
CMyButton m_8;
CMyButton m_9;
CMyButton m_10;
CMyButton m_Add;
CMyButton m_plus;
CMyButton m_Back;
CMyButton m_Tab;
CMyButton m_Q;
CMyButton m_W;
CMyButton m_E;
CMyButton m_R;
CMyButton m_T;
CMyButton m_Y;
CMyButton m_U;
CMyButton m_I;
CMyButton m_O;
CMyButton m_p;
CMyButton m_bracketr;
CMyButton m_bracketl;
CMyButton m_char1;
CMyButton m_Caps;
CMyButton m_S;
CMyButton m_D;
CMyButton m_F;
CMyButton m_G;
CMyButton m_H;
CMyButton m_J;
CMyButton m_K;
CMyButton m_L;
CMyButton m_Char2;
CMyButton m_Char3;
CMyButton m_Shift_L;
CMyButton m_Z;
CMyButton m_X;
CMyButton m_C;
CMyButton m_V;
CMyButton m_B;
CMyButton m_N;
CMyButton m_M;
CMyButton m_char4;
CMyButton m_char5;
CMyButton m_char7;
CMyButton m_UP;
CMyButton m_Enter;
CMyButton m_Ctrl_L;
CMyButton m_Win;
CMyButton m_Alt_L;
CMyButton m_Space;
CMyButton m_Down;
CMyButton m_Right;
CMyButton m_Left;
BOOL Key1 = FALSE, Key2 = FALSE, Key3 = FALSE, Key4 = FALSE, Key5 = FALSE, Key6 = FALSE, Key7 = FALSE, Key8 = FALSE, Key9 = TRUE, Key10 = FALSE,
Key11 = TRUE, Key12 = FALSE, Key13 = FALSE, Key14 = FALSE, Key15 = FALSE, Key16 = FALSE, Key17 = FALSE, Key18 = FALSE, Key19 = FALSE,
Key20 = FALSE, Key21 = FALSE, Key22 = FALSE, Key23 = FALSE, Key24 = FALSE, Key25 = FALSE, Key26 = FALSE, Key27 = FALSE, Key28 = FALSE,
Key29 = FALSE, Key30 = FALSE, Key31 = FALSE, Key32 = FALSE, Key33 = FALSE, Key34 = FALSE, Key35 = FALSE, Key36 = FALSE,Key37 = FALSE, 
Key38 = FALSE, Key39 = FALSE, Key40 = FALSE, Key41 = FALSE, Key42 = FALSE, Key43 = FALSE, Key44 = FALSE, Key45 = FALSE,Key46 = FALSE, 
Key47 = FALSE, Key48 = FALSE, Key49 = FALSE, Key50 = FALSE, Key51 = FALSE, Key52 = FALSE, Key53 = FALSE, Key54 = FALSE,Key55 = FALSE, 
Key56 = TRUE, Key57 = FALSE, Key58 = FALSE, Key59 = FALSE, Key60 = FALSE, Key61 = FALSE, Key62 = FALSE, Key63 = FALSE,Key64 = FALSE, 
Key65 = FALSE, Key66 = FALSE, Key67 = FALSE, Key68 = FALSE, Key69 = FALSE, Key70 = FALSE, Key71 = FALSE, Key72 = FALSE,Key73 = FALSE;
CStringArray KeyNum;
};

// KeyBoardDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "KeyBoard.h"
#include "KeyBoardDlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();

// 对话框数据
enum { IDD = IDD_ABOUTBOX };

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()

// CKeyBoardDlg 对话框

CKeyBoardDlg::CKeyBoardDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CKeyBoardDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CKeyBoardDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BUTTON34, m_A);
DDX_Control(pDX, IDC_BUTTON1, m_Esc);
DDX_Control(pDX, IDC_BUTTON2, m_F1);
DDX_Control(pDX, IDC_BUTTON3, m_F2);
DDX_Control(pDX, IDC_BUTTON4, m_F3);
DDX_Control(pDX, IDC_BUTTON5, m_F4);
DDX_Control(pDX, IDC_BUTTON6, m_F5);
DDX_Control(pDX, IDC_BUTTON7, m_F6);
DDX_Control(pDX, IDC_BUTTON8, m_F7);
DDX_Control(pDX, IDC_BUTTON9, m_F8);
DDX_Control(pDX, IDC_BUTTON10, m_F9);
DDX_Control(pDX, IDC_BUTTON11, m_F10);
DDX_Control(pDX, IDC_BUTTON12, m_F11);
DDX_Control(pDX, IDC_BUTTON13, m_F12);
DDX_Control(pDX, IDC_BUTTON15, m_Char);
DDX_Control(pDX, IDC_BUTTON16, m_1);
DDX_Control(pDX, IDC_BUTTON17, m_2);
DDX_Control(pDX, IDC_BUTTON18, m_3);
DDX_Control(pDX, IDC_BUTTON19, m_4);
DDX_Control(pDX, IDC_BUTTON20, m_5);
DDX_Control(pDX, IDC_BUTTON21, m_6);
DDX_Control(pDX, IDC_BUTTON22, m_7);
DDX_Control(pDX, IDC_BUTTON23, m_8);
DDX_Control(pDX, IDC_BUTTON24, m_9);
DDX_Control(pDX, IDC_BUTTON25, m_10);
DDX_Control(pDX, IDC_BUTTON26, m_Add);
DDX_Control(pDX, IDC_BUTTON27, m_plus);
DDX_Control(pDX, IDC_BUTTON28, m_Back);
DDX_Control(pDX, IDC_BUTTON29, m_Tab);
DDX_Control(pDX, IDC_BUTTON33, m_Q);
DDX_Control(pDX, IDC_BUTTON37, m_W);
DDX_Control(pDX, IDC_BUTTON38, m_E);
DDX_Control(pDX, IDC_BUTTON39, m_R);
DDX_Control(pDX, IDC_BUTTON40, m_T);
DDX_Control(pDX, IDC_BUTTON41, m_Y);
DDX_Control(pDX, IDC_BUTTON42, m_U);
DDX_Control(pDX, IDC_BUTTON43, m_I);
DDX_Control(pDX, IDC_BUTTON44, m_O);
DDX_Control(pDX, IDC_BUTTON45, m_p);
DDX_Control(pDX, IDC_BUTTON46, m_bracketr);
DDX_Control(pDX, IDC_BUTTON47, m_bracketl);
DDX_Control(pDX, IDC_BUTTON48, m_char1);
DDX_Control(pDX, IDC_BUTTON30, m_Caps);
DDX_Control(pDX, IDC_BUTTON49, m_S);
DDX_Control(pDX, IDC_BUTTON50, m_D);
DDX_Control(pDX, IDC_BUTTON51, m_F);
DDX_Control(pDX, IDC_BUTTON52, m_G);
DDX_Control(pDX, IDC_BUTTON53, m_H);
DDX_Control(pDX, IDC_BUTTON54, m_J);
DDX_Control(pDX, IDC_BUTTON55, m_K);
DDX_Control(pDX, IDC_BUTTON56, m_L);
DDX_Control(pDX, IDC_BUTTON57, m_Char2);
DDX_Control(pDX, IDC_BUTTON58, m_Char3);
DDX_Control(pDX, IDC_BUTTON31, m_Shift_L);
DDX_Control(pDX, IDC_BUTTON35, m_Z);
DDX_Control(pDX, IDC_BUTTON61, m_X);
DDX_Control(pDX, IDC_BUTTON62, m_C);
DDX_Control(pDX, IDC_BUTTON63, m_V);
DDX_Control(pDX, IDC_BUTTON64, m_B);
DDX_Control(pDX, IDC_BUTTON65, m_N);
DDX_Control(pDX, IDC_BUTTON66, m_M);
DDX_Control(pDX, IDC_BUTTON67, m_char4);
DDX_Control(pDX, IDC_BUTTON68, m_char5);
DDX_Control(pDX, IDC_BUTTON69, m_char7);
DDX_Control(pDX, IDC_BUTTON70, m_UP);
DDX_Control(pDX, IDC_BUTTON60, m_Enter);
DDX_Control(pDX, IDC_BUTTON32, m_Ctrl_L);
DDX_Control(pDX, IDC_BUTTON36, m_Win);
DDX_Control(pDX, IDC_BUTTON73, m_Alt_L);
DDX_Control(pDX, IDC_BUTTON59, m_Space);
DDX_Control(pDX, IDC_BUTTON80, m_Down);
DDX_Control(pDX, IDC_BUTTON81, m_Right);
DDX_Control(pDX, IDC_BUTTON82, m_Left);
}

BEGIN_MESSAGE_MAP(CKeyBoardDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()

// CKeyBoardDlg 消息处理程序

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

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetFontColorBKcolor(m_F8);
SetFontColorBKcolor(m_Alt_L);
SetFontColorBKcolor(m_F10);
// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO:  在此添加额外的初始化代码

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CKeyBoardDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CKeyBoardDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CKeyBoardDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}

void CKeyBoardDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO:  在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CKeyBoardDlg::SetFontColorBKcolor(CMyButton &str)
{
str.SetBKColor(120);
str.SetForeColor(234);
}

BOOL CKeyBoardDlg::IsTrue()
{
if (Key1 == TRUE&&Key2 == TRUE&& Key3 == TRUE&& Key4 == TRUE&& Key5 == TRUE&& Key6 == TRUE&& Key7 == TRUE&& Key8 == TRUE&& Key9 == TRUE&& Key10 == TRUE&&
Key11 == TRUE&& Key12 == TRUE&& Key13 == TRUE&& Key14 == TRUE&& Key15 == TRUE&& Key16 == TRUE&& Key17 == TRUE&& Key18 == TRUE&& Key19 == TRUE&&
Key20 == TRUE&& Key21 == TRUE&& Key22 == TRUE&& Key23 == TRUE&& Key24 == TRUE&& Key25 == TRUE&& Key26 == TRUE&& Key27 == TRUE&& Key28 == TRUE&&
Key29 == TRUE&& Key30 == TRUE&& Key31 == TRUE&& Key32 == TRUE&& Key33 == TRUE&& Key34 == TRUE&& Key35 == TRUE&& Key36 == TRUE&& Key37 == TRUE&&
Key38 == TRUE&& Key39 == TRUE&& Key40 == TRUE&& Key41 == TRUE&& Key42 == TRUE&& Key43 == TRUE&& Key44 == TRUE&& Key45 == TRUE&& Key46 == TRUE&&
Key47 == TRUE&& Key48 == TRUE&& Key49 == TRUE&& Key50 == TRUE&& Key51 == TRUE&& Key52 == TRUE&& Key53 == TRUE&& Key54 == TRUE&& Key55 == TRUE&&
Key56 == TRUE&& Key57 == TRUE&& Key58 == TRUE&& Key59 == TRUE&& Key60 == TRUE&& Key61 == TRUE&& Key62 == TRUE&& Key63 == TRUE&& Key64 == TRUE&&
Key65 == TRUE&& Key66 == TRUE&& Key67 == TRUE&& Key68 == TRUE&& Key69 == TRUE&& Key70 == TRUE&& Key71 == TRUE&& Key72 == TRUE&& Key73 == TRUE)
return TRUE;
return FALSE;
}

BOOL CKeyBoardDlg::PreTranslateMessage(MSG* pMsg)
{

if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case 0x1B:
{
SetFontColorBKcolor(m_Esc);
if (Key1 == FALSE)
RunKeySet("Key1",Key1);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x70:
{
SetFontColorBKcolor(m_F1);
if (Key2 == FALSE)
RunKeySet("Key2",Key2);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x71:
{
SetFontColorBKcolor(m_F2);
if (Key3==FALSE)
RunKeySet("Key3", Key3);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x72:
{
SetFontColorBKcolor(m_F3);
if (Key4 == FALSE)
RunKeySet("Key4", Key4);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x73:
{
SetFontColorBKcolor(m_F4);
if (Key5 == FALSE)
RunKeySet("Key5", Key5);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x74:
{
SetFontColorBKcolor(m_F5);
if (Key6 == FALSE)
RunKeySet("Key6", Key6);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x75:
{
SetFontColorBKcolor(m_F6);
if (Key7 == FALSE)
RunKeySet("Key7", Key7);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x76:
{
SetFontColorBKcolor(m_F7);
if (Key8 == FALSE)
RunKeySet("Key8", Key8);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 119:
{
SetFontColorBKcolor(m_F8);
if (Key9 == FALSE)
RunKeySet("Key9", Key9);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 0x78:
{
SetFontColorBKcolor(m_F9);
if (Key10 == FALSE)
RunKeySet("Key10", Key10);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case VK_F10:
{
SetFontColorBKcolor(m_F10);
if (Key11 == FALSE)
RunKeySet("Key11", Key11);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case VK_F11:
{
SetFontColorBKcolor(m_F11);
if (Key12 == FALSE)
RunKeySet("Key12", Key12);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case VK_F12:
{
SetFontColorBKcolor(m_F12);
if (Key13 == FALSE)
RunKeySet("Key13", Key13);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 49:
{
SetFontColorBKcolor(m_1);
if (Key14 == FALSE)
RunKeySet("Key14", Key14);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 50:
{
SetFontColorBKcolor(m_2);
if (Key15 == FALSE)
RunKeySet("Key15", Key15);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 51:
{
SetFontColorBKcolor(m_3);
if (Key16 == FALSE)
RunKeySet("Key16", Key16);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 52:
{
SetFontColorBKcolor(m_4);
if (Key17 == FALSE)
RunKeySet("Key17", Key17);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 53:
{
SetFontColorBKcolor(m_5);
if (Key18 == FALSE)
RunKeySet("Key18", Key18);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 54:
{
SetFontColorBKcolor(m_6);
if (Key19 == FALSE)
RunKeySet("Key19", Key19);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 55:
{
SetFontColorBKcolor(m_7);
if (Key20 == FALSE)
RunKeySet("Key20", Key20);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 56:
{
SetFontColorBKcolor(m_8);
if (Key21 == FALSE)
RunKeySet("Key21", Key21);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 57:
{
SetFontColorBKcolor(m_9);
if (Key22 == FALSE)
RunKeySet("Key22", Key22);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 48:
{
SetFontColorBKcolor(m_10);
if (Key23 == FALSE)
RunKeySet("Key23", Key23);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 65:
{
SetFontColorBKcolor(m_A);
if (Key24 == FALSE)
RunKeySet("Key24", Key24);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 66:
{
SetFontColorBKcolor(m_B);
if (Key25 == FALSE)
RunKeySet("Key25", Key25);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 67:
{
SetFontColorBKcolor(m_C);
if (Key26 == FALSE)
RunKeySet("Key26", Key26);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 68:
{
SetFontColorBKcolor(m_D);
if (Key27 == FALSE)
RunKeySet("Key27", Key27);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 69:
{
SetFontColorBKcolor(m_E);
if (Key28 == FALSE)
RunKeySet("Key28", Key28);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 70:
{
SetFontColorBKcolor(m_F);
if (Key29 == FALSE)
RunKeySet("Key29", Key29);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 71:
{
SetFontColorBKcolor(m_G);
if (Key30 == FALSE)
RunKeySet("Key30", Key30);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 72:
{
SetFontColorBKcolor(m_H);
if (Key31 == FALSE)
RunKeySet("Key31", Key31);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 73:
{
SetFontColorBKcolor(m_I);
if (Key32 == FALSE)
RunKeySet("Key32", Key32);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 74:
{
SetFontColorBKcolor(m_J);
if (Key33 == FALSE)
RunKeySet("Key33", Key33);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 75:
{
SetFontColorBKcolor(m_K);
if (Key34 == FALSE)
RunKeySet("Key34", Key34);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 76:
{
SetFontColorBKcolor(m_L);
if (Key35 == FALSE)
RunKeySet("Key35", Key35);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 77:
{
SetFontColorBKcolor(m_M);
if (Key36 == FALSE)
RunKeySet("Key36", Key36);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 78:
{
SetFontColorBKcolor(m_N);
if (Key37 == FALSE)
RunKeySet("Key37", Key37);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 79:
{
SetFontColorBKcolor(m_O);
if (Key38 == FALSE)
RunKeySet("Key38", Key38);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 80:
{
SetFontColorBKcolor(m_p);
if (Key39 == FALSE)
RunKeySet("Key39", Key39);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 81:
{
SetFontColorBKcolor(m_Q);
if (Key40 == FALSE)
RunKeySet("Key40", Key40);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 82:
{
SetFontColorBKcolor(m_R);
if (Key41 == FALSE)
RunKeySet("Key41", Key41);
if (KeyNum.GetSize ()== 73)
{
exit(0);
}
break;
}
case 83:
{
SetFontColorBKcolor(m_S);
if (Key42 == FALSE)
RunKeySet("Key42", Key42);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 84:
{
SetFontColorBKcolor(m_T);
if (Key43 == FALSE)
RunKeySet("Key43", Key43);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 85:
{
SetFontColorBKcolor(m_U);
if (Key44 == FALSE)
RunKeySet("Key44", Key44);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 86:
{
SetFontColorBKcolor(m_V);
if (Key45 == FALSE)
RunKeySet("Key45", Key45);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 87:
{
SetFontColorBKcolor(m_W);
if (Key46 == FALSE)
RunKeySet("Key46", Key46);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 88:
{
SetFontColorBKcolor(m_X);
if (Key47 == FALSE)
RunKeySet("Key47", Key47);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 89:
{
SetFontColorBKcolor(m_Y);
if (Key48 == FALSE)
RunKeySet("Key48", Key48);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 90:
{
SetFontColorBKcolor(m_Z);
if (Key49 == FALSE)
RunKeySet("Key49", Key49);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 192:
{
SetFontColorBKcolor(m_Char);
if (Key50 == FALSE)
RunKeySet("Key50", Key50);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 9:
{
SetFontColorBKcolor(m_Tab);
if (Key51 == FALSE)
RunKeySet("Key51", Key51);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 20:
{
SetFontColorBKcolor(m_Caps);
if (Key52 == FALSE)
RunKeySet("Key52", Key52);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 16:
{
SetFontColorBKcolor(m_Shift_L);
if (Key53 == FALSE)
RunKeySet("Key53", Key53);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 17:
{
SetFontColorBKcolor(m_Ctrl_L);
if (Key54 == FALSE)
RunKeySet("Key54", Key54);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 91:
{
SetFontColorBKcolor(m_Win);
if (Key55 == FALSE)
RunKeySet("Key55", Key55);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 18:
{
SetFontColorBKcolor(m_Alt_L);
if (Key56 == FALSE)
RunKeySet("Key56", Key56);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 32:
{
SetFontColorBKcolor(m_Space);
if (Key57 == FALSE)
RunKeySet("Key57", Key57);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 40:
{
SetFontColorBKcolor(m_Down);
if (Key58 == FALSE)
RunKeySet("Key58", Key58);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 39:
{
SetFontColorBKcolor(m_Right);
if (Key59 == FALSE)
RunKeySet("Key59", Key59);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 37:
{
SetFontColorBKcolor(m_Left);
if (Key60 == FALSE)
RunKeySet("Key60", Key60);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 38:
{
SetFontColorBKcolor(m_UP);
if (Key61 == FALSE)
RunKeySet("Key61", Key61);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 188:
{
SetFontColorBKcolor(m_char4);
if (Key62 == FALSE)
RunKeySet("Key62", Key62);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 190:
{
SetFontColorBKcolor(m_char5);
if (Key63 == FALSE)
RunKeySet("Key63", Key63);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 191:
{
SetFontColorBKcolor(m_char7);
if (Key64 == FALSE)
RunKeySet("Key64", Key64);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 186:
{
SetFontColorBKcolor(m_Char2);
if (Key65 == FALSE)
RunKeySet("Key65", Key65);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 222:
{
SetFontColorBKcolor(m_Char3);
if (Key66 == FALSE)
RunKeySet("Key66", Key66);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 13:
{
SetFontColorBKcolor(m_Enter);
if (Key67 == FALSE)
RunKeySet("Key67", Key67);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 219:
{
SetFontColorBKcolor(m_bracketr);
if (Key68 == FALSE)
RunKeySet("Key68", Key68);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 221:
{
SetFontColorBKcolor(m_bracketl);
if (Key69 == FALSE)
RunKeySet("Key69", Key69);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 220:
{
SetFontColorBKcolor(m_char1);
if (Key70 == FALSE)
RunKeySet("Key70", Key70);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 189:
{
SetFontColorBKcolor(m_Add);
if (Key71 == FALSE)
RunKeySet("Key71", Key71);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 187:
{
SetFontColorBKcolor(m_plus);
if (Key72 == FALSE)
RunKeySet("Key72", Key72);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}
case 8:
{
SetFontColorBKcolor(m_Back);
if (Key73 == FALSE)
RunKeySet("Key73", Key73);
if (IsTrue()==TRUE)
{
exit(0);
}
break;
}

default:
{
break;
}
}
}
if ((pMsg->message == WM_KEYDOWN&&
pMsg->wParam==VK_TAB&&
VK_F1 == pMsg->wParam) || (VK_RWIN == pMsg->wParam) || 
(VK_LWIN == pMsg->wParam) || (pMsg->message == 77) || 
(pMsg->wParam == VK_ESCAPE) || (VK_SPACE == pMsg->wParam)
||(pMsg->wParam == VK_MENU)) return TRUE;
//else if((VK_F1 == pMsg->wParam && WM_KEYDOWN == pMsg->message) || (pMsg->message == 77))
//return TRUE;
else
   return CDialog::PreTranslateMessage(pMsg);
}

void CKeyBoardDlg::OnOK()
{
// TODO:  在此添加专用代码和/或调用基类

//CDialogEx::OnOK();
}

void CKeyBoardDlg::RunKeySet(CString str, BOOL &KeyIs)
{
KeyNum.Add(str);
KeyIs = TRUE;

}

#pragma once
#include "afxwin.h"
class CMyButton :
public CButton
{
public:
CMyButton();
~CMyButton();

private:
int m_Style;              //鼠标进入标志
BOOL b_InRect;            //按钮文字
CString m_strText;        //文本颜色
COLORREF m_ForeColor;      //背景色
COLORREF m_BackColor;     //锁定按钮的文字颜色
COLORREF m_LockForColor;
CRect m_ButRect;          //按钮尺寸
CFont* p_Font;            //字体
void DrawButton(CDC *pDC);

public:
void SetText(CString str);
void SetForeColor(COLORREF color);
void SetBKColor(COLORREF color);
void SetTextFont(int FontHight,LPCTSTR FontName);
virtual void PreSubclassWindow();
virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);
DECLARE_MESSAGE_MAP()
afx_msg void OnMouseHover(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
};

#include "stdafx.h"
#include "MyButton.h"

CMyButton::CMyButton()
{
m_Style = 0;
b_InRect = false;
m_strText=_T("");
m_ForeColor = RGB(0,0,0);
m_BackColor = RGB(243,243,243);
m_LockForColor = GetSysColor(COLOR_GRAYTEXT);
p_Font = NULL;
}

CMyButton::~CMyButton()
{
if (p_Font) delete p_Font;
}

void CMyButton::PreSubclassWindow()
{
// TODO:  在此添加专用代码和/或调用基类
ModifyStyle(0,BS_OWNERDRAW);
CButton::PreSubclassWindow();
}

void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
m_ButRect = lpDrawItemStruct->rcItem;
if (m_strText.IsEmpty())
GetWindowText(m_strText);
int nSavedDC = pDC->SaveDC();
VERIFY(pDC);
DrawButton(pDC);
pDC->RestoreDC(nSavedDC);
// TODO:  添加您的代码以绘制指定项
}
BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_WM_MOUSEHOVER()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()

void CMyButton::DrawButton(CDC *pDC)
{
if (m_Style == 3)m_Style = 0;
if (GetStyle()&WS_DISABLED)
m_Style = 3;
COLORREF bColor, fColor;
switch (m_Style)
{
    case 0: bColor = RGB(192, 192, 192); fColor = m_ForeColor; break;   //正常按钮
    case 1: bColor = RGB(255, 255, 255); fColor = m_ForeColor; break;   //鼠标进入时按钮
    case 2: bColor = RGB(192, 192, 192); fColor = m_ForeColor; break;   //按下的按钮
case 3: bColor = m_BackColor; fColor = m_LockForColor; break;    //锁定的按钮
}

CBrush Brush;
Brush.CreateSolidBrush(m_BackColor);//背景刷
pDC->SelectObject(&Brush);
CPen Pen;
Pen.CreatePen(PS_SOLID,1,bColor);
pDC->SelectObject(&Pen);
pDC->RoundRect(&m_ButRect,CPoint(5,5));
if (m_Style != 2)
{
CRect Rect;
Rect.SetRect(m_ButRect.left + 2, m_ButRect.top + 1, m_ButRect.right, m_ButRect.bottom);
pDC->DrawEdge(&Rect, BDR_RAISEDINNER, BF_RECT);     //画边框
}
pDC->SetTextColor(fColor);         //画文字
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(m_strText, &m_ButRect, DT_SINGLELINE | DT_CENTER
| DT_VCENTER | DT_END_ELLIPSIS);
//绘制拥有焦点按钮的虚线框
if (GetFocus() == this)
{
CRect Rect;
Rect.SetRect(m_ButRect.left + 3, m_ButRect.top + 2, m_ButRect.right - 3, m_ButRect.bottom - 2);
pDC->DrawFocusRect(&Rect);     //画拥有焦点的虚线框
}
}

void CMyButton::OnMouseHover(UINT nFlags, CPoint point)
{
// TODO:  在此添加消息处理程序代码和/或调用默认值
if (!b_InRect || GetCapture() != this)     //鼠标进入按钮
{
b_InRect = true;     //设置进入标志
SetCapture();        //捕获鼠标
m_Style = 1;         //设置按钮状态
Invalidate();        //重绘按钮
}
else
{
if (!m_ButRect.PtInRect(point))     //鼠标离开按钮
{
b_InRect = false;    //清除进入标志
ReleaseCapture();    //释放捕获的鼠标
m_Style = 0;         //设置按钮状态
Invalidate();        //重绘按钮
}
}
CButton::OnMouseHover(nFlags, point);
}

void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO:  在此添加消息处理程序代码和/或调用默认值
m_Style = 2;
Invalidate();
CButton::OnLButtonDown(nFlags, point);
}

void CMyButton::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO:  在此添加消息处理程序代码和/或调用默认值
m_Style = 1;
Invalidate();
CButton::OnLButtonUp(nFlags, point);
}

void CMyButton::SetText(CString str)
{
m_strText=_T("");
SetWindowText(str);
}

void CMyButton::SetForeColor(COLORREF color)
{
m_ForeColor = color;
Invalidate();
}

void CMyButton::SetBKColor(COLORREF color)
{
m_BackColor = color;
Invalidate();
}

void CMyButton::SetTextFont(int FontHight, LPCTSTR FontName)
{
if (p_Font) delete p_Font;
p_Font = new CFont;
p_Font->CreatePointFont(FontHight,FontName);
SetFont(p_Font);
}

c++ MFC模拟笔记本键盘测试相关推荐

  1. Delphi下利用WinIo模拟鼠标键盘详解

    本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...

  2. 关于笔记本键盘错乱的原因及解决办法

    最近因为感觉笔记本键盘用习惯了,对于台式机键盘就会很陌生,而且平时比较正式的测试或是技能展示都是通过台式机键盘,这样的会笔记本键盘用习惯了就不利于平时的对于台式机的适应~~~bulabulabula( ...

  3. python 模拟鼠标键盘_python之模拟鼠标键盘动作

    上个月就打算开发个还算好玩的项目,但是一直没时间.这篇是此项目用到的一部分, 处理好此部分基本还差通信等方面的了.首先模拟鼠标键盘按下释放的动作,本人利用X11 这个库,所以要了解X11编程;其次,本 ...

  4. 联想笔记本键盘排线_三分钟了解笔记本键盘维修技巧

    ▲ 点击蓝字关注我们 笔记本键盘维修技巧 笔记本按键错位,失灵怎么办? 看完你就知道怎么修了! 笔记本电脑的键盘是一个比较容易坏的硬件,出问题的情况也是五花八门,当你的笔记本电脑键盘出了问题时,不要慌 ...

  5. 笔记本购机测试软件大全

    ●Everest v3.50.852 Beta整机测试软件 文件大小11.5MB Everest整机测试软件是从以前著名的AIDA32软件发展而来.它是一个可以测试软.硬件系统信息的工具,可以详细的显 ...

  6. 计算机和电脑键盘进水怎么办,笔记本键盘进水失灵了怎么办?别着急,只需记住这几招!...

    笔记本键盘进水失灵了怎么办?别着急,只需记住这几招! 我们生活中都会遇到这样的一件事情,也就是尴尬的时候,那就是我们喝水的时候或者是干嘛的时候一不小心就把水倒进了键盘里面,尤其是我们正在做重要的事情的 ...

  7. 基于jQuery的软键盘【模拟软键盘】

    http://www.cnblogs.com/crookie/p/3796931.html http://mottie.github.io/Keyboard/docs/mobile.html http ...

  8. 解决 笔记本 键盘进水 问题

    前几日闲来无事就想给自己的键盘贴一张膜,自己的笔记本是联想F40A的从买到现在2年多了,期间没有出过任何问题,散热简直是刚刚地,自己喜欢DIY把他分家至少二十多次,几乎每两个月就想拆开捣鼓捣鼓.加膜之 ...

  9. python录制鼠标动作_python之模拟鼠标键盘动作具体实现

    导读热词 上个月就打算开发个还算好玩的项目,但是一直没时间.这篇是此项目用到的一部分, 处理好此部分基本还差通信等方面的了.首先模拟鼠标键盘按下释放的动作,本人利用X11 这个库,所以要了解X11编程 ...

最新文章

  1. queue 常见方法
  2. 在i386平台Linux 2.6 上实现一个系统调用
  3. mysql触发器 while循环_mysql触发器跳出当前循环方法
  4. 汉王人脸1000万用户后的第一人诞生
  5. arcgis安装license的问题
  6. .net core 使用redis 基于 StackExchange.Redis
  7. 使用while和FOR循环分布打印字符串S='asdfer' 中的每一个元素
  8. iOS 疑难杂症 — — 推送本地国际化 loc-key 本地化失败的问题
  9. python语言的两种注释方法_python中编写注释的方法
  10. 城市智能公交管理系统方案
  11. 开源任务式问答机器人框架系列之Dialogflow
  12. 基于matlab的可见光成像通信OOK解调
  13. 在Foxmail邮件客户端登录263企业邮箱
  14. 计算机上瘾英语对话,对手机上瘾的英语作文(精选5篇)
  15. ONEDNS配置1:centos7DNS服务器forwarder配置
  16. W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。W: 无法下载。下列签名无效:W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
  17. Druid连接池耗尽问题排查总结
  18. C语言数字图像处理---1.5图像基本变换之平移缩放旋转
  19. Arduino 入门学习笔记7 I2C LCD1602液晶显示实验 及 超声波传感器距离检测
  20. 刚刚加入博客的小白白

热门文章

  1. 《近匠》专访猿团创始人CEO谢恩明:梦想、未来、改变
  2. 集成学习bagging
  3. 《iOS防护01》ptrace防护
  4. yarn 命令学习:yarn application
  5. Python的下载及安装
  6. 知之者不如好之者 好之者不如乐之者
  7. 得到APP互联网营销分析
  8. 向量 p范数的凹凸性证明
  9. idcardweb装入失败_vpk安装错误0xffffe Android Crash问题分析以及解决 - 硬件设备 - 服务器之家...
  10. Vue新建项目与npm使用.