www.pudn.com > KeyBoard.rar > KeyBoardDlg.cpp


// KeyBoardDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "KeyBoard.h" 
#include "KeyBoardDlg.h" 
#include "resource.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CAboutDlg dialog used for App About 
 
class CAboutDlg : public CDialog 
{ 
public: 
	CAboutDlg(); 
 
// Dialog Data 
	//{{AFX_DATA(CAboutDlg) 
	enum { IDD = IDD_ABOUTBOX }; 
	//}}AFX_DATA 
 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CAboutDlg) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
	CRgn m_rgn;	 
	CBrush m_brush; 
	//{{AFX_MSG(CAboutDlg) 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	virtual BOOL OnInitDialog(); 
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);	 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 
{ 
	//{{AFX_DATA_INIT(CAboutDlg) 
	//}}AFX_DATA_INIT 
} 
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CAboutDlg) 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 
	//{{AFX_MSG_MAP(CAboutDlg) 
	ON_WM_LBUTTONDOWN() 
	ON_WM_ERASEBKGND()//重绘窗口		 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// 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 
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
	m_bCaps = 0;	 
} 
 
void CKeyBoardDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CKeyBoardDlg) 
	DDX_Control(pDX, IDC_ESC, m_key_esc); 
	DDX_Control(pDX, IDC_F1, m_key_f1); 
	DDX_Control(pDX, IDC_F2, m_key_f2); 
	DDX_Control(pDX, IDC_F3, m_key_f3); 
	DDX_Control(pDX, IDC_F4, m_key_f4); 
	DDX_Control(pDX, IDC_F5, m_key_f5); 
	DDX_Control(pDX, IDC_F6, m_key_f6); 
	DDX_Control(pDX, IDC_F7, m_key_f7); 
	DDX_Control(pDX, IDC_F8, m_key_f8); 
	DDX_Control(pDX, IDC_F9, m_key_f9); 
	DDX_Control(pDX, IDC_F10, m_key_f10); 
	DDX_Control(pDX, IDC_F11, m_key_f11); 
	DDX_Control(pDX, IDC_F12, m_key_f12); 
	DDX_Control(pDX, IDC_PAUSE, m_key_pause); 
	DDX_Control(pDX, IDC_INS, m_key_ins); 
	DDX_Control(pDX, IDC_DEL, m_key_del); 
	DDX_Control(pDX, IDC_PGUP, m_key_pgup); 
	DDX_Control(pDX, IDC_PGDN, m_key_pgdn); 
	DDX_Control(pDX, IDC_HOME, m_key_home); 
	DDX_Control(pDX, IDC_END, m_key_end); 
	DDX_Control(pDX, IDC_ONCE, m_key_once); 
	DDX_Control(pDX, IDC_1, m_key_1); 
	DDX_Control(pDX, IDC_2, m_key_2); 
	DDX_Control(pDX, IDC_3, m_key_3); 
	DDX_Control(pDX, IDC_4, m_key_4); 
	DDX_Control(pDX, IDC_5, m_key_5); 
	DDX_Control(pDX, IDC_6, m_key_6); 
	DDX_Control(pDX, IDC_7, m_key_7); 
	DDX_Control(pDX, IDC_8, m_key_8); 
	DDX_Control(pDX, IDC_9, m_key_9); 
	DDX_Control(pDX, IDC_0, m_key_0); 
	DDX_Control(pDX, IDC_10, m_key_10); 
	DDX_Control(pDX, IDC_11, m_key_11); 
	DDX_Control(pDX, IDC_12, m_key_12); 
	DDX_Control(pDX, IDC_BSPC, m_key_bspc); 
	DDX_Control(pDX, IDC_TAB, m_key_tab); 
	DDX_Control(pDX, IDC_Q, m_key_q); 
	DDX_Control(pDX, IDC_W, m_key_w); 
	DDX_Control(pDX, IDC_E, m_key_e); 
	DDX_Control(pDX, IDC_R, m_key_r); 
	DDX_Control(pDX, IDC_T, m_key_t); 
	DDX_Control(pDX, IDC_Y, m_key_y); 
	DDX_Control(pDX, IDC_U, m_key_u); 
	DDX_Control(pDX, IDC_I, m_key_i); 
	DDX_Control(pDX, IDC_O, m_key_o); 
	DDX_Control(pDX, IDC_P, m_key_p); 
	DDX_Control(pDX, IDC_P1, m_key_p1); 
	DDX_Control(pDX, IDC_P2, m_key_p2); 
	DDX_Control(pDX, IDC_CAPS, m_key_caps); 
	DDX_Control(pDX, IDC_A, m_key_a); 
	DDX_Control(pDX, IDC_S, m_key_s); 
	DDX_Control(pDX, IDC_D, m_key_d); 
	DDX_Control(pDX, IDC_F, m_key_f); 
	DDX_Control(pDX, IDC_G, m_key_g); 
	DDX_Control(pDX, IDC_H, m_key_h); 
	DDX_Control(pDX, IDC_J, m_key_j); 
	DDX_Control(pDX, IDC_K, m_key_k); 
	DDX_Control(pDX, IDC_L, m_key_l); 
	DDX_Control(pDX, IDC_L1, m_key_l1); 
	DDX_Control(pDX, IDC_L2, m_key_l2); 
	DDX_Control(pDX, IDC_SHIF, m_key_shif); 
	DDX_Control(pDX, IDC_Z, m_key_z); 
	DDX_Control(pDX, IDC_X, m_key_x); 
	DDX_Control(pDX, IDC_C, m_key_c); 
	DDX_Control(pDX, IDC_V, m_key_v); 
	DDX_Control(pDX, IDC_B, m_key_b); 
	DDX_Control(pDX, IDC_N, m_key_n); 
	DDX_Control(pDX, IDC_M, m_key_m); 
	DDX_Control(pDX, IDC_M1, m_key_m1); 
	DDX_Control(pDX, IDC_M2, m_key_m2); 
	DDX_Control(pDX, IDC_M3, m_key_m3); 
	DDX_Control(pDX, IDC_CTRL, m_key_ctrl); 
	DDX_Control(pDX, IDC_WND, m_key_wnd); 
	DDX_Control(pDX, IDC_ALT, m_key_alt); 
	DDX_Control(pDX, IDC_MENU, m_key_menu); 
	DDX_Control(pDX, IDC_TOP, m_key_top); 
	DDX_Control(pDX, IDC_BOTTOM, m_key_bottom); 
	DDX_Control(pDX, IDC_LEFT, m_key_left); 
	DDX_Control(pDX, IDC_RIGHT, m_key_right); 
	DDX_Control(pDX, IDC_SPACE, m_key_space); 
	DDX_Control(pDX, IDC_ENTER, m_key_enter); 
	DDX_Control(pDX, IDC_PS, m_key_ps); 
	DDX_Control(pDX, IDC_EXIT, m_key_exit); 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CKeyBoardDlg, CDialog) 
	ON_WM_CONTEXTMENU() 
	//{{AFX_MSG_MAP(CKeyBoardDlg) 
	ON_WM_SYSCOMMAND() 
	ON_WM_PAINT() 
	ON_WM_QUERYDRAGICON() 
	ON_WM_NCHITTEST()//点窗体任何部位移动窗体 
	ON_WM_ERASEBKGND()//重绘窗口 
	ON_WM_CREATE() 
	//}}AFX_MSG_MAP 
 	ON_BN_CLICKED(IDC_ESC, OnKeyEsc) 
	ON_BN_CLICKED(IDC_F1, OnKeyF1) 
	ON_BN_CLICKED(IDC_F2, OnKeyF2) 
	ON_BN_CLICKED(IDC_F3, OnKeyF3) 
	ON_BN_CLICKED(IDC_F4, OnKeyF4) 
	ON_BN_CLICKED(IDC_F5, OnKeyF5) 
	ON_BN_CLICKED(IDC_F6, OnKeyF6) 
	ON_BN_CLICKED(IDC_F7, OnKeyF7) 
	ON_BN_CLICKED(IDC_F8, OnKeyF8) 
	ON_BN_CLICKED(IDC_F9, OnKeyF9) 
	ON_BN_CLICKED(IDC_F10, OnKeyF10) 
	ON_BN_CLICKED(IDC_F11, OnKeyF11) 
	ON_BN_CLICKED(IDC_F12, OnKeyF12) 
	ON_BN_CLICKED(IDC_PAUSE, OnKeyPause) 
	ON_BN_CLICKED(IDC_INS, OnKeyIns) 
	ON_BN_CLICKED(IDC_DEL, OnKeyDel) 
	ON_BN_CLICKED(IDC_PGUP, OnKeyPgup) 
	ON_BN_CLICKED(IDC_PGDN, OnKeyPgdn) 
	ON_BN_CLICKED(IDC_HOME, OnKeyHome) 
	ON_BN_CLICKED(IDC_END, OnKeyEnd) 
	ON_BN_CLICKED(IDC_ONCE, OnKeyOnce) 
	ON_BN_CLICKED(IDC_1, OnKey1) 
	ON_BN_CLICKED(IDC_2, OnKey2) 
	ON_BN_CLICKED(IDC_3, OnKey3) 
	ON_BN_CLICKED(IDC_4, OnKey4) 
	ON_BN_CLICKED(IDC_5, OnKey5) 
	ON_BN_CLICKED(IDC_6, OnKey6) 
	ON_BN_CLICKED(IDC_7, OnKey7) 
	ON_BN_CLICKED(IDC_8, OnKey8) 
	ON_BN_CLICKED(IDC_9, OnKey9) 
	ON_BN_CLICKED(IDC_0, OnKey0) 
	ON_BN_CLICKED(IDC_10, OnKey10) 
	ON_BN_CLICKED(IDC_11, OnKey11) 
	ON_BN_CLICKED(IDC_12, OnKey12) 
	ON_BN_CLICKED(IDC_BSPC, OnKeyBspc) 
	ON_BN_CLICKED(IDC_TAB, OnKeyTab) 
	ON_BN_CLICKED(IDC_Q, OnKeyQ) 
	ON_BN_CLICKED(IDC_W, OnKeyW) 
	ON_BN_CLICKED(IDC_E, OnKeyE) 
	ON_BN_CLICKED(IDC_R, OnKeyR) 
	ON_BN_CLICKED(IDC_T, OnKeyT) 
	ON_BN_CLICKED(IDC_Y, OnKeyY) 
	ON_BN_CLICKED(IDC_U, OnKeyU) 
	ON_BN_CLICKED(IDC_I, OnKeyI) 
	ON_BN_CLICKED(IDC_O, OnKeyO) 
	ON_BN_CLICKED(IDC_P, OnKeyP) 
	ON_BN_CLICKED(IDC_P1, OnKeyP1) 
	ON_BN_CLICKED(IDC_P2, OnKeyP2) 
	ON_BN_CLICKED(IDC_CAPS, OnKeyCaps) 
	ON_BN_CLICKED(IDC_A, OnKeyA) 
	ON_BN_CLICKED(IDC_S, OnKeyS) 
	ON_BN_CLICKED(IDC_D, OnKeyD) 
	ON_BN_CLICKED(IDC_F, OnKeyF) 
	ON_BN_CLICKED(IDC_G, OnKeyG) 
	ON_BN_CLICKED(IDC_H, OnKeyH) 
	ON_BN_CLICKED(IDC_J, OnKeyJ) 
	ON_BN_CLICKED(IDC_K, OnKeyK) 
	ON_BN_CLICKED(IDC_L, OnKeyL) 
	ON_BN_CLICKED(IDC_L1, OnKeyL1) 
	ON_BN_CLICKED(IDC_L2, OnKeyL2) 
	ON_BN_CLICKED(IDC_Z, OnKeyZ) 
	ON_BN_CLICKED(IDC_X, OnKeyX) 
	ON_BN_CLICKED(IDC_C, OnKeyC) 
	ON_BN_CLICKED(IDC_V, OnKeyV) 
	ON_BN_CLICKED(IDC_B, OnKeyB) 
	ON_BN_CLICKED(IDC_N, OnKeyN) 
	ON_BN_CLICKED(IDC_M, OnKeyM) 
	ON_BN_CLICKED(IDC_M1, OnKeyM1) 
	ON_BN_CLICKED(IDC_M2, OnKeyM2) 
	ON_BN_CLICKED(IDC_M3, OnKeyM3) 
	ON_BN_CLICKED(IDC_WND, OnKeyWnd) 
	ON_BN_CLICKED(IDC_MENU, OnKeyMenu) 
	ON_BN_CLICKED(IDC_TOP, OnKeyTop) 
	ON_BN_CLICKED(IDC_BOTTOM, OnKeyBotton) 
	ON_BN_CLICKED(IDC_LEFT, OnKeyLeft) 
	ON_BN_CLICKED(IDC_RIGHT, OnKeyRight) 
	ON_BN_CLICKED(IDC_SPACE, OnKeySpace) 
	ON_BN_CLICKED(IDC_ENTER, OnKeyEnter)	 
	ON_BN_CLICKED(IDC_PS, OnKeyPs) 
	ON_BN_CLICKED(IDC_ABOUT, OnAbout) 
 
	ON_BN_CLICKED(IDC_SHIF, OnKeyShif) 
	ON_BN_CLICKED(IDC_CTRL, OnKeyCtrl) 
	ON_BN_CLICKED(IDC_ALT, OnKeyAlt) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CKeyBoardDlg message handlers 
 
BOOL CKeyBoardDlg::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	// Add "About..." menu item to system menu. 
 
	// IDM_ABOUTBOX must be in the system command range. 
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
	ASSERT(IDM_ABOUTBOX < 0xF000); 
 
	CMenu* pSysMenu = GetSystemMenu(FALSE); 
	if (pSysMenu != NULL) 
	{ 
		CString strAboutMenu; 
		strAboutMenu.LoadString(IDS_ABOUTBOX); 
		if (!strAboutMenu.IsEmpty()) 
		{ 
			pSysMenu->AppendMenu(MF_SEPARATOR); 
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 
		} 
	} 
 
	// Set the icon for this dialog.  The framework does this automatically 
	//  when the application's main window is not a dialog 
	SetIcon(m_hIcon, TRUE);			// Set big icon 
	SetIcon(m_hIcon, FALSE);		// Set small icon 
	 
	// TODO: Add extra initialization here 
	//设置矩形窗口(内部)	 
	CRect winrect; 
	GetClientRect(&winrect); 
	m_brush.CreateSolidBrush(RGB(255,255,255)); 
	m_rgn.CreateRectRgn(0,0,winrect.right,winrect.bottom); 
 
    SetWindowRgn(m_rgn, 1); 
	SetWindowText(_T("软键盘")); 
	 
	////////////////////////////////////////////// 
	//加载按钮图片	 
	m_key_esc.SetBitmaps(IDB_ESC_UP, RGB(0, 255, 0),IDB_ESC_DOWN, RGB(0, 255, 0)); 
	m_key_esc.DrawTransparent(TRUE); 
	m_key_esc.DrawBorder(FALSE); 
	m_key_esc.SetBtnCursor(IDC_HAND); 
 
	m_key_f1.SetBitmaps(IDB_F1_UP, RGB(0, 255, 0),IDB_F1_DOWN, RGB(0, 255, 0)); 
	m_key_f1.DrawTransparent(TRUE); 
	m_key_f1.DrawBorder(FALSE); 
	m_key_f1.SetBtnCursor(IDC_HAND); 
 
	m_key_f2.SetBitmaps(IDB_F2_UP, RGB(0, 255, 0),IDB_F2_DOWN, RGB(0, 255, 0)); 
	m_key_f2.DrawTransparent(TRUE); 
	m_key_f2.DrawBorder(FALSE); 
	m_key_f2.SetBtnCursor(IDC_HAND); 
 
	m_key_f3.SetBitmaps(IDB_F3_UP, RGB(0, 255, 0),IDB_F3_DOWN, RGB(0, 255, 0)); 
	m_key_f3.DrawTransparent(TRUE); 
	m_key_f3.DrawBorder(FALSE); 
	m_key_f3.SetBtnCursor(IDC_HAND); 
 
	m_key_f4.SetBitmaps(IDB_F4_UP, RGB(0, 255, 0),IDB_F4_DOWN, RGB(0, 255, 0)); 
	m_key_f4.DrawTransparent(TRUE); 
	m_key_f4.DrawBorder(FALSE); 
	m_key_f4.SetBtnCursor(IDC_HAND); 
 
	m_key_f5.SetBitmaps(IDB_F5_UP, RGB(0, 255, 0),IDB_F5_DOWN, RGB(0, 255, 0)); 
	m_key_f5.DrawTransparent(TRUE); 
	m_key_f5.DrawBorder(FALSE); 
	m_key_f5.SetBtnCursor(IDC_HAND); 
 
	m_key_f6.SetBitmaps(IDB_F6_UP, RGB(0, 255, 0),IDB_F6_DOWN, RGB(0, 255, 0)); 
	m_key_f6.DrawTransparent(TRUE); 
	m_key_f6.DrawBorder(FALSE); 
	m_key_f6.SetBtnCursor(IDC_HAND); 
 
	m_key_f7.SetBitmaps(IDB_F7_UP, RGB(0, 255, 0),IDB_F7_DOWN, RGB(0, 255, 0)); 
	m_key_f7.DrawTransparent(TRUE); 
	m_key_f7.DrawBorder(FALSE); 
	m_key_f7.SetBtnCursor(IDC_HAND); 
 
	m_key_f8.SetBitmaps(IDB_F8_UP, RGB(0, 255, 0),IDB_F8_DOWN, RGB(0, 255, 0)); 
	m_key_f8.DrawTransparent(TRUE); 
	m_key_f8.DrawBorder(FALSE); 
	m_key_f8.SetBtnCursor(IDC_HAND); 
 
	m_key_f9.SetBitmaps(IDB_F9_UP, RGB(0, 255, 0),IDB_F9_DOWN, RGB(0, 255, 0)); 
	m_key_f9.DrawTransparent(TRUE); 
	m_key_f9.DrawBorder(FALSE); 
	m_key_f9.SetBtnCursor(IDC_HAND); 
 
	m_key_f10.SetBitmaps(IDB_F10_UP, RGB(0, 255, 0),IDB_F10_DOWN, RGB(0, 255, 0)); 
	m_key_f10.DrawTransparent(TRUE); 
	m_key_f10.DrawBorder(FALSE); 
	m_key_f10.SetBtnCursor(IDC_HAND); 
 
	m_key_f11.SetBitmaps(IDB_F11_UP, RGB(0, 255, 0),IDB_F11_DOWN, RGB(0, 255, 0)); 
	m_key_f11.DrawTransparent(TRUE); 
	m_key_f11.DrawBorder(FALSE); 
	m_key_f11.SetBtnCursor(IDC_HAND); 
 
	m_key_f12.SetBitmaps(IDB_F12_UP, RGB(0, 255, 0),IDB_F12_DOWN, RGB(0, 255, 0)); 
	m_key_f12.DrawTransparent(TRUE); 
	m_key_f12.DrawBorder(FALSE); 
	m_key_f12.SetBtnCursor(IDC_HAND); 
 
	m_key_pause.SetBitmaps(IDB_PAUSE_UP, RGB(0, 255, 0),IDB_PAUSE_DOWN, RGB(0, 255, 0)); 
	m_key_pause.DrawTransparent(TRUE); 
	m_key_pause.DrawBorder(FALSE); 
	m_key_pause.SetBtnCursor(IDC_HAND); 
 
	m_key_ins.SetBitmaps(IDB_INS_UP, RGB(0, 255, 0),IDB_INS_DOWN, RGB(0, 255, 0)); 
	m_key_ins.DrawTransparent(TRUE); 
	m_key_ins.DrawBorder(FALSE); 
	m_key_ins.SetBtnCursor(IDC_HAND); 
 
	m_key_del.SetBitmaps(IDB_DEL_UP, RGB(0, 255, 0),IDB_DEL_DOWN, RGB(0, 255, 0)); 
	m_key_del.DrawTransparent(TRUE); 
	m_key_del.DrawBorder(FALSE); 
	m_key_del.SetBtnCursor(IDC_HAND); 
 
	m_key_pgup.SetBitmaps(IDB_PGUP_UP, RGB(0, 255, 0),IDB_PGUP_DOWN, RGB(0, 255, 0)); 
	m_key_pgup.DrawTransparent(TRUE); 
	m_key_pgup.DrawBorder(FALSE); 
	m_key_pgup.SetBtnCursor(IDC_HAND); 
 
	m_key_pgdn.SetBitmaps(IDB_PGDN_UP, RGB(0, 255, 0),IDB_PGDN_DOWN, RGB(0, 255, 0)); 
	m_key_pgdn.DrawTransparent(TRUE); 
	m_key_pgdn.DrawBorder(FALSE); 
	m_key_pgdn.SetBtnCursor(IDC_HAND); 
 
	m_key_home.SetBitmaps(IDB_HOME_UP, RGB(0, 255, 0),IDB_HOME_DOWN, RGB(0, 255, 0)); 
	m_key_home.DrawTransparent(TRUE); 
	m_key_home.DrawBorder(FALSE); 
	m_key_home.SetBtnCursor(IDC_HAND); 
 
	m_key_end.SetBitmaps(IDB_END_UP, RGB(0, 255, 0),IDB_END_DOWN, RGB(0, 255, 0)); 
	m_key_end.DrawTransparent(TRUE); 
	m_key_end.DrawBorder(FALSE); 
	m_key_end.SetBtnCursor(IDC_HAND); 
 
	m_key_once.SetBitmaps(IDB_ONCE_UP, RGB(0, 255, 0),IDB_ONCE_DOWN, RGB(0, 255, 0)); 
	m_key_once.DrawTransparent(TRUE); 
	m_key_once.DrawBorder(FALSE); 
	m_key_once.SetBtnCursor(IDC_HAND); 
 
	m_key_1.SetBitmaps(IDB_1_UP, RGB(0, 255, 0),IDB_1_DOWN, RGB(0, 255, 0)); 
	m_key_1.DrawTransparent(TRUE); 
	m_key_1.DrawBorder(FALSE); 
	m_key_1.SetBtnCursor(IDC_HAND); 
 
	m_key_2.SetBitmaps(IDB_2_UP, RGB(0, 255, 0),IDB_2_DOWN, RGB(0, 255, 0)); 
	m_key_2.DrawTransparent(TRUE); 
	m_key_2.DrawBorder(FALSE); 
	m_key_2.SetBtnCursor(IDC_HAND); 
 
	m_key_3.SetBitmaps(IDB_3_UP, RGB(0, 255, 0),IDB_3_DOWN, RGB(0, 255, 0)); 
	m_key_3.DrawTransparent(TRUE); 
	m_key_3.DrawBorder(FALSE); 
	m_key_3.SetBtnCursor(IDC_HAND); 
 
	m_key_4.SetBitmaps(IDB_4_UP, RGB(0, 255, 0),IDB_4_DOWN, RGB(0, 255, 0)); 
	m_key_4.DrawTransparent(TRUE); 
	m_key_4.DrawBorder(FALSE); 
	m_key_4.SetBtnCursor(IDC_HAND); 
 
	m_key_5.SetBitmaps(IDB_5_UP, RGB(0, 255, 0),IDB_5_DOWN, RGB(0, 255, 0)); 
	m_key_5.DrawTransparent(TRUE); 
	m_key_5.DrawBorder(FALSE); 
	m_key_5.SetBtnCursor(IDC_HAND); 
 
	m_key_6.SetBitmaps(IDB_6_UP, RGB(0, 255, 0),IDB_6_DOWN, RGB(0, 255, 0)); 
	m_key_6.DrawTransparent(TRUE); 
	m_key_6.DrawBorder(FALSE); 
	m_key_6.SetBtnCursor(IDC_HAND); 
 
	m_key_7.SetBitmaps(IDB_7_UP, RGB(0, 255, 0),IDB_7_DOWN, RGB(0, 255, 0)); 
	m_key_7.DrawTransparent(TRUE); 
	m_key_7.DrawBorder(FALSE); 
	m_key_7.SetBtnCursor(IDC_HAND); 
 
	m_key_8.SetBitmaps(IDB_8_UP, RGB(0, 255, 0),IDB_8_DOWN, RGB(0, 255, 0)); 
	m_key_8.DrawTransparent(TRUE); 
	m_key_8.DrawBorder(FALSE); 
	m_key_8.SetBtnCursor(IDC_HAND); 
 
	m_key_9.SetBitmaps(IDB_9_UP, RGB(0, 255, 0),IDB_9_DOWN, RGB(0, 255, 0)); 
	m_key_9.DrawTransparent(TRUE); 
	m_key_9.DrawBorder(FALSE); 
	m_key_9.SetBtnCursor(IDC_HAND); 
 
	m_key_0.SetBitmaps(IDB_0_UP, RGB(0, 255, 0),IDB_0_DOWN, RGB(0, 255, 0)); 
	m_key_0.DrawTransparent(TRUE); 
	m_key_0.DrawBorder(FALSE); 
	m_key_0.SetBtnCursor(IDC_HAND); 
 
	m_key_10.SetBitmaps(IDB_10_UP, RGB(0, 255, 0),IDB_10_DOWN, RGB(0, 255, 0)); 
	m_key_10.DrawTransparent(TRUE); 
	m_key_10.DrawBorder(FALSE); 
	m_key_10.SetBtnCursor(IDC_HAND); 
 
	m_key_11.SetBitmaps(IDB_11_UP, RGB(0, 255, 0),IDB_11_DOWN, RGB(0, 255, 0)); 
	m_key_11.DrawTransparent(TRUE); 
	m_key_11.DrawBorder(FALSE); 
	m_key_11.SetBtnCursor(IDC_HAND); 
 
	m_key_12.SetBitmaps(IDB_12_UP, RGB(0, 255, 0),IDB_12_DOWN, RGB(0, 255, 0)); 
	m_key_12.DrawTransparent(TRUE); 
	m_key_12.DrawBorder(FALSE); 
	m_key_12.SetBtnCursor(IDC_HAND); 
 
	m_key_bspc.SetBitmaps(IDB_BSPC_UP, RGB(0, 255, 0),IDB_BSPC_DOWN, RGB(0, 255, 0)); 
	m_key_bspc.DrawTransparent(TRUE); 
	m_key_bspc.DrawBorder(FALSE); 
	m_key_bspc.SetBtnCursor(IDC_HAND); 
 
	m_key_tab.SetBitmaps(IDB_TAB_UP, RGB(0, 255, 0),IDB_TAB_DOWN, RGB(0, 255, 0)); 
	m_key_tab.DrawTransparent(TRUE); 
	m_key_tab.DrawBorder(FALSE); 
	m_key_tab.SetBtnCursor(IDC_HAND); 
 
	m_key_q.SetBitmaps(IDB_Q_UP, RGB(0, 255, 0),IDB_Q_DOWN, RGB(0, 255, 0)); 
	m_key_q.DrawTransparent(TRUE); 
	m_key_q.DrawBorder(FALSE); 
	m_key_q.SetBtnCursor(IDC_HAND); 
 
	m_key_w.SetBitmaps(IDB_W_UP, RGB(0, 255, 0),IDB_W_DOWN, RGB(0, 255, 0)); 
	m_key_w.DrawTransparent(TRUE); 
	m_key_w.DrawBorder(FALSE); 
	m_key_w.SetBtnCursor(IDC_HAND); 
 
	m_key_e.SetBitmaps(IDB_E_UP, RGB(0, 255, 0),IDB_E_DOWN, RGB(0, 255, 0)); 
	m_key_e.DrawTransparent(TRUE); 
	m_key_e.DrawBorder(FALSE); 
	m_key_e.SetBtnCursor(IDC_HAND); 
 
	m_key_r.SetBitmaps(IDB_R_UP, RGB(0, 255, 0),IDB_R_DOWN, RGB(0, 255, 0)); 
	m_key_r.DrawTransparent(TRUE); 
	m_key_r.DrawBorder(FALSE); 
	m_key_r.SetBtnCursor(IDC_HAND); 
 
	m_key_t.SetBitmaps(IDB_T_UP, RGB(0, 255, 0),IDB_T_DOWN, RGB(0, 255, 0)); 
	m_key_t.DrawTransparent(TRUE); 
	m_key_t.DrawBorder(FALSE); 
	m_key_t.SetBtnCursor(IDC_HAND); 
 
	m_key_y.SetBitmaps(IDB_Y_UP, RGB(0, 255, 0),IDB_Y_DOWN, RGB(0, 255, 0)); 
	m_key_y.DrawTransparent(TRUE); 
	m_key_y.DrawBorder(FALSE); 
	m_key_y.SetBtnCursor(IDC_HAND); 
 
	m_key_u.SetBitmaps(IDB_U_UP, RGB(0, 255, 0),IDB_U_DOWN, RGB(0, 255, 0)); 
	m_key_u.DrawTransparent(TRUE); 
	m_key_u.DrawBorder(FALSE); 
	m_key_u.SetBtnCursor(IDC_HAND); 
 
	m_key_i.SetBitmaps(IDB_I_UP, RGB(0, 255, 0),IDB_I_DOWN, RGB(0, 255, 0)); 
	m_key_i.DrawTransparent(TRUE); 
	m_key_i.DrawBorder(FALSE); 
	m_key_i.SetBtnCursor(IDC_HAND); 
 
	m_key_o.SetBitmaps(IDB_O_UP, RGB(0, 255, 0),IDB_O_DOWN, RGB(0, 255, 0)); 
	m_key_o.DrawTransparent(TRUE); 
	m_key_o.DrawBorder(FALSE); 
	m_key_o.SetBtnCursor(IDC_HAND); 
 
	m_key_p.SetBitmaps(IDB_P_UP, RGB(0, 255, 0),IDB_P_DOWN, RGB(0, 255, 0)); 
	m_key_p.DrawTransparent(TRUE); 
	m_key_p.DrawBorder(FALSE); 
	m_key_p.SetBtnCursor(IDC_HAND); 
 
	m_key_p1.SetBitmaps(IDB_P1_UP, RGB(0, 255, 0),IDB_P1_DOWN, RGB(0, 255, 0)); 
	m_key_p1.DrawTransparent(TRUE); 
	m_key_p1.DrawBorder(FALSE); 
	m_key_p1.SetBtnCursor(IDC_HAND); 
 
	m_key_p2.SetBitmaps(IDB_P2_UP, RGB(0, 255, 0),IDB_P2_DOWN, RGB(0, 255, 0)); 
	m_key_p2.DrawTransparent(TRUE); 
	m_key_p2.DrawBorder(FALSE); 
	m_key_p2.SetBtnCursor(IDC_HAND); 
 
	m_key_caps.SetBitmaps(IDB_CAPS_UP, RGB(0, 255, 0),IDB_CAPS_DOWN, RGB(0, 255, 0)); 
	m_key_caps.DrawTransparent(TRUE); 
	m_key_caps.DrawBorder(FALSE); 
	m_key_caps.SetBtnCursor(IDC_HAND); 
 
	m_key_a.SetBitmaps(IDB_A_UP, RGB(0, 255, 0),IDB_A_DOWN, RGB(0, 255, 0)); 
	m_key_a.DrawTransparent(TRUE); 
	m_key_a.DrawBorder(FALSE); 
	m_key_a.SetBtnCursor(IDC_HAND); 
 
	m_key_s.SetBitmaps(IDB_S_UP, RGB(0, 255, 0),IDB_S_DOWN, RGB(0, 255, 0)); 
	m_key_s.DrawTransparent(TRUE); 
	m_key_s.DrawBorder(FALSE); 
	m_key_s.SetBtnCursor(IDC_HAND); 
 
	m_key_d.SetBitmaps(IDB_D_UP, RGB(0, 255, 0),IDB_D_DOWN, RGB(0, 255, 0)); 
	m_key_d.DrawTransparent(TRUE); 
	m_key_d.DrawBorder(FALSE); 
	m_key_d.SetBtnCursor(IDC_HAND); 
 
	m_key_f.SetBitmaps(IDB_F_UP, RGB(0, 255, 0),IDB_F_DOWN, RGB(0, 255, 0)); 
	m_key_f.DrawTransparent(TRUE); 
	m_key_f.DrawBorder(FALSE); 
	m_key_f.SetBtnCursor(IDC_HAND); 
 
	m_key_g.SetBitmaps(IDB_G_UP, RGB(0, 255, 0),IDB_G_DOWN, RGB(0, 255, 0)); 
	m_key_g.DrawTransparent(TRUE); 
	m_key_g.DrawBorder(FALSE); 
	m_key_g.SetBtnCursor(IDC_HAND); 
 
	m_key_h.SetBitmaps(IDB_H_UP, RGB(0, 255, 0),IDB_H_DOWN, RGB(0, 255, 0)); 
	m_key_h.DrawTransparent(TRUE); 
	m_key_h.DrawBorder(FALSE); 
	m_key_h.SetBtnCursor(IDC_HAND); 
 
	m_key_j.SetBitmaps(IDB_J_UP, RGB(0, 255, 0),IDB_J_DOWN, RGB(0, 255, 0)); 
	m_key_j.DrawTransparent(TRUE); 
	m_key_j.DrawBorder(FALSE); 
	m_key_j.SetBtnCursor(IDC_HAND); 
 
	m_key_k.SetBitmaps(IDB_K_UP, RGB(0, 255, 0),IDB_K_DOWN, RGB(0, 255, 0)); 
	m_key_k.DrawTransparent(TRUE); 
	m_key_k.DrawBorder(FALSE); 
	m_key_k.SetBtnCursor(IDC_HAND); 
 
	m_key_l.SetBitmaps(IDB_L_UP, RGB(0, 255, 0),IDB_L_DOWN, RGB(0, 255, 0)); 
	m_key_l.DrawTransparent(TRUE); 
	m_key_l.DrawBorder(FALSE); 
	m_key_l.SetBtnCursor(IDC_HAND); 
 
	m_key_l1.SetBitmaps(IDB_L1_UP, RGB(0, 255, 0),IDB_L1_DOWN, RGB(0, 255, 0)); 
	m_key_l1.DrawTransparent(TRUE); 
	m_key_l1.DrawBorder(FALSE); 
	m_key_l1.SetBtnCursor(IDC_HAND); 
 
	m_key_l2.SetBitmaps(IDB_L2_UP, RGB(0, 255, 0),IDB_L2_DOWN, RGB(0, 255, 0)); 
	m_key_l2.DrawTransparent(TRUE); 
	m_key_l2.DrawBorder(FALSE); 
	m_key_l2.SetBtnCursor(IDC_HAND); 
 
	m_key_shif.SetBitmaps(IDB_SHIF_UP, RGB(0, 255, 0),IDB_SHIF_DOWN, RGB(0, 255, 0)); 
	m_key_shif.DrawTransparent(TRUE); 
	m_key_shif.DrawBorder(FALSE); 
	m_key_shif.SetBtnCursor(IDC_HAND); 
 
	m_key_z.SetBitmaps(IDB_Z_UP, RGB(0, 255, 0),IDB_Z_DOWN, RGB(0, 255, 0)); 
	m_key_z.DrawTransparent(TRUE); 
	m_key_z.DrawBorder(FALSE); 
	m_key_z.SetBtnCursor(IDC_HAND); 
 
	m_key_x.SetBitmaps(IDB_X_UP, RGB(0, 255, 0),IDB_X_DOWN, RGB(0, 255, 0)); 
	m_key_x.DrawTransparent(TRUE); 
	m_key_x.DrawBorder(FALSE); 
	m_key_x.SetBtnCursor(IDC_HAND); 
 
	m_key_c.SetBitmaps(IDB_C_UP, RGB(0, 255, 0),IDB_C_DOWN, RGB(0, 255, 0)); 
	m_key_c.DrawTransparent(TRUE); 
	m_key_c.DrawBorder(FALSE); 
	m_key_c.SetBtnCursor(IDC_HAND); 
 
	m_key_v.SetBitmaps(IDB_V_UP, RGB(0, 255, 0),IDB_V_DOWN, RGB(0, 255, 0)); 
	m_key_v.DrawTransparent(TRUE); 
	m_key_v.DrawBorder(FALSE); 
	m_key_v.SetBtnCursor(IDC_HAND); 
 
	m_key_b.SetBitmaps(IDB_B_UP, RGB(0, 255, 0),IDB_B_DOWN, RGB(0, 255, 0)); 
	m_key_b.DrawTransparent(TRUE); 
	m_key_b.DrawBorder(FALSE); 
	m_key_b.SetBtnCursor(IDC_HAND); 
 
	m_key_n.SetBitmaps(IDB_N_UP, RGB(0, 255, 0),IDB_N_DOWN, RGB(0, 255, 0)); 
	m_key_n.DrawTransparent(TRUE); 
	m_key_n.DrawBorder(FALSE); 
	m_key_n.SetBtnCursor(IDC_HAND); 
 
	m_key_m.SetBitmaps(IDB_M_UP, RGB(0, 255, 0),IDB_M_DOWN, RGB(0, 255, 0)); 
	m_key_m.DrawTransparent(TRUE); 
	m_key_m.DrawBorder(FALSE); 
	m_key_m.SetBtnCursor(IDC_HAND); 
 
	m_key_m1.SetBitmaps(IDB_M1_UP, RGB(0, 255, 0),IDB_M1_DOWN, RGB(0, 255, 0)); 
	m_key_m1.DrawTransparent(TRUE); 
	m_key_m1.DrawBorder(FALSE); 
	m_key_m1.SetBtnCursor(IDC_HAND); 
 
	m_key_m2.SetBitmaps(IDB_M2_UP, RGB(0, 255, 0),IDB_M2_DOWN, RGB(0, 255, 0)); 
	m_key_m2.DrawTransparent(TRUE); 
	m_key_m2.DrawBorder(FALSE); 
	m_key_m2.SetBtnCursor(IDC_HAND); 
 
	m_key_m3.SetBitmaps(IDB_M3_UP, RGB(0, 255, 0),IDB_M3_DOWN, RGB(0, 255, 0)); 
	m_key_m3.DrawTransparent(TRUE); 
	m_key_m3.DrawBorder(FALSE); 
	m_key_m3.SetBtnCursor(IDC_HAND); 
 
	m_key_ctrl.SetBitmaps(IDB_CTRL_UP, RGB(0, 255, 0),IDB_CTRL_DOWN, RGB(0, 255, 0)); 
	m_key_ctrl.DrawTransparent(TRUE); 
	m_key_ctrl.DrawBorder(FALSE); 
	m_key_ctrl.SetBtnCursor(IDC_HAND); 
 
	m_key_wnd.SetBitmaps(IDB_WND_UP, RGB(0, 255, 0),IDB_WND_DOWN, RGB(0, 255, 0)); 
	m_key_wnd.DrawTransparent(TRUE); 
	m_key_wnd.DrawBorder(FALSE); 
	m_key_wnd.SetBtnCursor(IDC_HAND); 
 
	m_key_alt.SetBitmaps(IDB_ALT_UP, RGB(0, 255, 0),IDB_ALT_DOWN, RGB(0, 255, 0)); 
	m_key_alt.DrawTransparent(TRUE); 
	m_key_alt.DrawBorder(FALSE); 
	m_key_alt.SetBtnCursor(IDC_HAND); 
 
	m_key_menu.SetBitmaps(IDB_MENU_UP, RGB(0, 255, 0),IDB_MENU_DOWN, RGB(0, 255, 0)); 
	m_key_menu.DrawTransparent(TRUE); 
	m_key_menu.DrawBorder(FALSE); 
	m_key_menu.SetBtnCursor(IDC_HAND); 
 
	m_key_top.SetBitmaps(IDB_TOP_UP, RGB(0, 255, 0),IDB_TOP_DOWN, RGB(0, 255, 0)); 
	m_key_top.DrawTransparent(TRUE); 
	m_key_top.DrawBorder(FALSE); 
	m_key_top.SetBtnCursor(IDC_HAND); 
 
	m_key_bottom.SetBitmaps(IDB_BOTTOM_UP, RGB(0, 255, 0),IDB_BOTTOM_DOWN, RGB(0, 255, 0)); 
	m_key_bottom.DrawTransparent(TRUE); 
	m_key_bottom.DrawBorder(FALSE); 
	m_key_bottom.SetBtnCursor(IDC_HAND); 
 
	m_key_left.SetBitmaps(IDB_LEFT_UP, RGB(0, 255, 0),IDB_LEFT_DOWN, RGB(0, 255, 0)); 
	m_key_left.DrawTransparent(TRUE); 
	m_key_left.DrawBorder(FALSE); 
	m_key_left.SetBtnCursor(IDC_HAND); 
 
	m_key_right.SetBitmaps(IDB_RIGHT_UP, RGB(0, 255, 0),IDB_RIGHT_DOWN, RGB(0, 255, 0)); 
	m_key_right.DrawTransparent(TRUE); 
	m_key_right.DrawBorder(FALSE); 
	m_key_right.SetBtnCursor(IDC_HAND); 
 
	m_key_space.SetBitmaps(IDB_SPACE, RGB(0, 255, 0)); 
	m_key_space.DrawTransparent(TRUE); 
	m_key_space.DrawBorder(FALSE); 
	m_key_space.SetBtnCursor(IDC_HAND); 
 
	m_key_enter.SetBitmaps(IDB_ENTER_UP, RGB(0, 255, 0),IDB_ENTER_DOWN, RGB(0, 255, 0)); 
	m_key_enter.DrawTransparent(TRUE); 
	m_key_enter.DrawBorder(FALSE); 
	m_key_enter.SetBtnCursor(IDC_HAND); 
 
	m_key_ps.SetBitmaps(IDB_PS_UP, RGB(0, 255, 0),IDB_PS_DOWN, RGB(0, 255, 0)); 
	m_key_ps.DrawTransparent(TRUE); 
	m_key_ps.DrawBorder(FALSE); 
	m_key_ps.SetBtnCursor(IDC_HAND); 
 
	m_key_exit.SetBitmaps(IDB_EXIT_UP, RGB(0, 255, 0),IDB_EXIT_DOWN, RGB(0, 255, 0)); 
	m_key_exit.DrawTransparent(TRUE); 
	m_key_exit.DrawBorder(FALSE); 
	m_key_exit.SetBtnCursor(IDC_HAND); 
	////////////////////////////////////////////// 
	return TRUE;  // return TRUE  unless you set the focus to a control 
} 
 
void CKeyBoardDlg::OnSysCommand(UINT nID, LPARAM lParam) 
{ 
	if ((nID & 0xFFF0) == IDM_ABOUTBOX) 
	{ 
		CAboutDlg dlgAbout; 
		dlgAbout.DoModal(); 
	} 
	else 
	{ 
		CDialog::OnSysCommand(nID, lParam); 
	} 
} 
 
// If you add a minimize button to your dialog, you will need the code below 
//  to draw the icon.  For MFC applications using the document/view model, 
//  this is automatically done for you by the framework. 
 
void CKeyBoardDlg::OnPaint()  
{ 
	if (IsIconic()) 
	{ 
		CPaintDC dc(this); // device context for painting 
 
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 
 
		// Center icon in client rectangle 
		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; 
 
		// Draw the icon 
		dc.DrawIcon(x, y, m_hIcon); 
	} 
	else 
	{ 
		CDialog::OnPaint(); 
	} 
} 
 
// The system calls this to obtain the cursor to display while the user drags 
//  the minimized window. 
HCURSOR CKeyBoardDlg::OnQueryDragIcon() 
{ 
	return (HCURSOR) m_hIcon; 
} 
 
void CKeyBoardDlg::OnContextMenu(CWnd*, CPoint point) 
{ 
	if (point.x == -1 && point.y == -1) 
	{		 
		CRect rect; 
		GetClientRect(rect); 
		ClientToScreen(rect); 
 
		point = rect.TopLeft(); 
		point.Offset(5, 5); 
	}	 
	BCMenu popmenu; 
	popmenu.LoadMenu(CG_IDR_POPUP_KEY_BOARD_DLG); 
	BCMenu::SetMenuDrawMode(BCMENU_DRAWMODE_XP); 
	//显示图片 
	popmenu.ModifyODMenu(NULL, IDCANCEL,IDB_QUIT); 
	popmenu.ModifyODMenu(NULL, IDC_ABOUT,IDB_ABOUT); 
 
	BCMenu *psub = (BCMenu *)popmenu.GetSubMenu(0);  
	psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this); 
	popmenu.DestroyMenu();
	 
} 
//重绘窗口 
BOOL CKeyBoardDlg::OnEraseBkgnd(CDC *pDC) 
{ 
	CRgn myrgn; 
	CBrush frameBrush; 
	CRect winrect; 
	GetClientRect(&winrect);	 
//	myrgn.CreateRectRgn(0,0,winrect.right,winrect.bottom);//绘制直角矩形 
	myrgn.CreateRoundRectRgn(0,0,winrect.right,winrect.bottom,5,5);//绘制圆角矩形圆角度5 
 
	frameBrush.CreateSolidBrush(RGB(0,158,221));	//边框颜色 
 
	pDC->FillRgn(&myrgn,&m_brush); 
	pDC->FrameRgn(&myrgn,&frameBrush,1,1); 
 
	pDC->SetBkMode(TRANSPARENT);	 
	return TRUE; 
} 
//点窗体任何部位移动窗体 
UINT CKeyBoardDlg::OnNcHitTest(CPoint point)  
{	 
	UINT nHitTest = CDialog :: OnNcHitTest (point); 
	return (nHitTest == HTCLIENT) ? HTCAPTION :nHitTest; 		 
} 
 
void CKeyBoardDlg::OnAbout()  
{ 
	// TODO: Add your control notification handler code here 
	CAboutDlg about; 
	about.DoModal(); 
} 
 
void CAboutDlg::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
	// TODO: Add your message handler code here and/or call default 
	PostMessage(WM_CLOSE);	 
	CDialog::OnLButtonDown(nFlags, point); 
} 
 
BOOL CAboutDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog();	 
	 
	//设置矩形窗口(内部)	 
	CRect winrect; 
	GetClientRect(&winrect); 
	m_brush.CreateSolidBrush(RGB(255,255,255)); 
	m_rgn.CreateRectRgn(0,0,winrect.right,winrect.bottom); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX PropertyPages should return FALSE 
} 
BOOL CAboutDlg::OnEraseBkgnd(CDC *pDC) 
{ 
	CRgn myrgn,rgn; 
	CBrush frameBrush; 
	CRect winrect; 
	GetClientRect(&winrect);	 
	myrgn.CreateRoundRectRgn(0,0,winrect.right,winrect.bottom,5,5);//绘制圆角矩形圆角度5 
	rgn.CreateRoundRectRgn(10,10,winrect.right - 10,winrect.bottom - 10,5,5);//绘制圆角矩形圆角度5 
 
	frameBrush.CreateSolidBrush(RGB(0,158,221));	//边框颜色 
 
	pDC->FillRgn(&myrgn,&m_brush); 
	pDC->FrameRgn(&myrgn,&frameBrush,1,1); 
	pDC->FrameRgn(&rgn,&frameBrush,1,1); 
 
	////////////////////////////////////////////// 
//	CBrush fillBrush; 
//	CRgn fillRgn; 
//	fillRgn.CreateRoundRectRgn(9,9,winrect.right - 10,winrect.bottom - 10,5,5); 
//	fillBrush.CreateSolidBrush(RGB(107,210,250)); 
//	pDC->FillRgn(&fillRgn,&fillBrush); 
	////////////////////////////////////////////// 
	pDC->SetBkMode(TRANSPARENT); 
	//文字 
	CFont font; 
	CRect tempRect;	 
 
	font.CreateFont(12,6,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET, 
					OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY, 
					VARIABLE_PITCH|FF_SWISS,"宋体"); 
	 
	pDC->SelectObject(&font); 
	 
	tempRect.top=20; 
	tempRect.left=55; 
	tempRect.right=500; 
	tempRect.bottom=200;	 
	pDC->DrawText(_T("KeyBoard 1.0 版"),&tempRect,DT_TOP|DT_WORDBREAK);	 
	tempRect.top+=25; 
	pDC->DrawText(_T("STORM 版权所有(C)2005"),&tempRect,DT_TOP|DT_WORDBREAK); 
	tempRect.top+=13; 
	pDC->DrawText(_T("storm_jyd@163.com"),&tempRect,DT_TOP|DT_WORDBREAK); 
	 
	return TRUE; 
} 
int CKeyBoardDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)  
{ 
	if (CDialog::OnCreate(lpCreateStruct) == -1) 
		return -1; 
	 
	//置窗体为最顶层显示及其位置 
	CRect rcW; 
	GetWindowRect(&rcW);	 
	SetWindowPos(&wndTopMost,rcW.left,rcW.top,rcW.Width(),rcW.Height(),SWP_NOSIZE|SWP_NOMOVE); 
 
	return 0; 
} 
//处理系统消息循环 
BOOL CKeyBoardDlg::PreTranslateMessage(MSG* pMsg)  
{ 
	HWND wnd = ::GetForegroundWindow(); 
	if(IsWindow(wnd)) 
	{ 
		//如果当前激活窗口不是本程序的窗口 
		if(wnd != this->m_hWnd) 
		{ 
			//激活窗口发生了改变 
			if(m_Focus != wnd) 
			{ 
				if(IsWindow(m_Focus)) 
				{ 
					//释放本进程和gFocus线程的联系 
					AttachThreadInput( 
						GetWindowThreadProcessId(m_hWnd,NULL), 
						GetWindowThreadProcessId(m_Focus,NULL), 
						FALSE); 
				} 
 
				m_Focus = wnd; 
				//使本进程和激活窗口的进程联系起来,接收本进程的按键消息 
				AttachThreadInput( 
					GetWindowThreadProcessId(m_hWnd,NULL), 
					GetWindowThreadProcessId(m_Focus,NULL), 
					TRUE); 
			} 
		} 
	} 
	return CDialog::PreTranslateMessage(pMsg); 
} 
 
void CKeyBoardDlg::ReleaseFocus() 
{ 
	//释放焦点 
	if(IsWindow(m_Focus)) 
	{ 
		HWND wnd = ::GetForegroundWindow(); 
		if(IsWindow(wnd)) 
		{ 
			if(wnd == m_Focus) 
			{ 
				return; 
			} 
		} 
		//设置保存的焦点窗口处于激活状态 
		::SetForegroundWindow(m_Focus); 
		::SetFocus(m_Focus); 
	} 
 
} 
void CKeyBoardDlg::OnKeyEsc()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_ESCAPE,0,0,0); 
	keybd_event(VK_ESCAPE,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF1()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F1,0,0,0); 
	keybd_event(VK_F1,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF2()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F2,0,0,0); 
	keybd_event(VK_F2,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF3()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F3,0,0,0); 
	keybd_event(VK_F3,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF4()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F4,0,0,0); 
	keybd_event(VK_F4,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF5()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F5,0,0,0); 
	keybd_event(VK_F5,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF6()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F6,0,0,0); 
	keybd_event(VK_F6,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF7()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F7,0,0,0); 
	keybd_event(VK_F7,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF8()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F8,0,0,0); 
	keybd_event(VK_F8,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF9()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F9,0,0,0); 
	keybd_event(VK_F9,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF10()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F10,0,0,0); 
	keybd_event(VK_F10,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF11()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F11,0,0,0); 
	keybd_event(VK_F11,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF12()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_F12,0,0,0); 
	keybd_event(VK_F12,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyPause()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_PAUSE,0,0,0); 
	keybd_event(VK_PAUSE,0,KEYEVENTF_KEYUP,0);	 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyIns()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_INSERT,0,0,0); 
	keybd_event(VK_INSERT,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyDel()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_DELETE,0,0,0); 
	keybd_event(VK_DELETE,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyPgup()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_PRIOR,0,0,0); 
	keybd_event(VK_PRIOR,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyPgdn()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_NEXT,0,0,0); 
	keybd_event(VK_NEXT,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyHome()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_HOME,0,0,0); 
	keybd_event(VK_HOME,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyEnd()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_END,0,0,0); 
	keybd_event(VK_END,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyOnce()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '`'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey1()  
{ 
	ReleaseFocus(); 
 
	char pChar; 
	pChar = '1'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey2()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = '2'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey3()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '3'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey4()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '4'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey5()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '5'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey6()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '6'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey7()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '7'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey8()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '8'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey9()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '9'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey0()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '0'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey10()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '-'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey11()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '='; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKey12()  
{ 
	ReleaseFocus(); 
	char pChar; 
	pChar = '\\'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyBspc()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_BACK,0,0,0); 
	keybd_event(VK_BACK,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyTab()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VkKeyScan(0x09) & 0xFF,0,0,0); 
	keybd_event(VkKeyScan(0x09) & 0xFF,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyQ()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'q'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyW()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'w'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyE()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'e'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyR()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'r'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyT()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 't'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyY()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'y'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyU()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'u'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyI()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'i'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyO()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'o'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyP()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'p'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyP1()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = '['; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyP2()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = ']'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyCaps()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_CAPITAL,0,0,0); 
	keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyA()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'a'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyS()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 's'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyD()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'd'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyF()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'f'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyG()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'g'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyH()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'h'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyJ()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'j'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyK()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'k'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyL()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'l'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyL1()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = ';'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyL2()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = '\''; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyZ()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'z'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyX()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'x'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyC()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'c'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyV()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'v'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyB()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'b'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyN()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'n'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyM()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = 'm'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	if(m_key_ctrl.GetCheck())//"ctrl"键是被按下 
	{	 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);		 
		m_key_ctrl.SetCheck(FALSE); 
	} 
	if(m_key_alt.GetCheck())//"alt"键是被按下 
	{	 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);		 
		m_key_alt.SetCheck(FALSE); 
	} 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyM1()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = ','; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyM2()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = '.'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyM3()  
{ 
	ReleaseFocus(); 
	 
	char pChar; 
	pChar = '/'; 
 
	SHORT ks = VkKeyScan(pChar); 
	BYTE key = ks & 0xFF; 
 
	keybd_event(key,0,0,0); 
	keybd_event(key,0,KEYEVENTF_KEYUP,0); 
 
	if(m_key_shif.GetCheck())//"shift"键是被按下 
	{	 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);		 
		m_key_shif.SetCheck(FALSE); 
	}	 
	 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyWnd()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_LWIN,0,0,0); 
	keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyMenu()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_APPS,0,0,0); 
	keybd_event(VK_APPS,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyTop()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_UP,0,0,0); 
	keybd_event(VK_UP,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyBotton()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_DOWN,0,0,0); 
	keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyLeft()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_LEFT,0,0,0); 
	keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyRight()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_RIGHT,0,0,0); 
	keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeySpace()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_SPACE,0,0,0); 
	keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyEnter()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VkKeyScan(0x0D) & 0xFF,0,0,0); 
	keybd_event(VkKeyScan(0x0D) & 0xFF,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyPs()  
{ 
	ReleaseFocus(); 
		 
	keybd_event(VK_SNAPSHOT,0,0,0); 
	keybd_event(VK_SNAPSHOT,0,KEYEVENTF_KEYUP,0); 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyShif()  
{ 
	ReleaseFocus(); 
	if (m_key_shif.GetCheck()) 
	{ 
		keybd_event(VK_SHIFT,0,0,0); 
	} 
	else 
	{ 
		keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); 
	} 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyCtrl()  
{ 
	ReleaseFocus(); 
	if (m_key_ctrl.GetCheck()) 
	{ 
		keybd_event(VK_CONTROL,0,0,0); 
	} 
	else 
	{ 
		keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); 
	} 
 
	ReleaseFocus(); 
} 
void CKeyBoardDlg::OnKeyAlt()  
{ 
	ReleaseFocus(); 
	if (m_key_alt.GetCheck()) 
	{ 
		keybd_event(VK_MENU,0,0,0); 
	} 
	else 
	{ 
		keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0); 
	} 
 
	ReleaseFocus(); 
}