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

📄 skbdlg.cpp

📁 WinCE下的软键盘为部分原码大家可以下下来参考以下帮助学习
💻 CPP
字号:
// AADlg.cpp : implementation file
//

#include "stdafx.h"
#include "SKBDlg.h"
#include "resource.h"
#include <Winuser.h>      ////// Uibase.lib


/////////////////////////////////////////////////////////////////////////////
// CSKBDlg dialog

/*
CSKBDlg::CSKBDlg(CWnd* pParent )
	: CDialog(CSKBDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSKBDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
    m_pParentWnd = pParent;  ////父窗口指针
    IsLowerCase  = TRUE;      ////默认小写
    m_pTargetWnd = NULL;
}
*/

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

BEGIN_MESSAGE_MAP(CSKBDlg, CDialog)
	//{{AFX_MSG_MAP(CSKBDlg)
	ON_BN_CLICKED(IDC_1, On1)
	ON_BN_CLICKED(IDC_2, On2)
	ON_BN_CLICKED(IDC_3, On3)
	ON_BN_CLICKED(IDC_4, On4)
	ON_BN_CLICKED(IDC_5, On5)
	ON_BN_CLICKED(IDC_6, On6)
	ON_BN_CLICKED(IDC_7, On7)
	ON_BN_CLICKED(IDC_8, On8)
	ON_BN_CLICKED(IDC_9, On9)
	ON_BN_CLICKED(IDC_0, On0)
	ON_BN_CLICKED(IDC_CAPSLOCK, OnCapslock)
	ON_BN_CLICKED(IDC_A, OnA)
	ON_BN_CLICKED(IDC_B, OnB)
	ON_BN_CLICKED(IDC_C, OnC)
	ON_BN_CLICKED(IDC_D, OnD)
	ON_BN_CLICKED(IDC_E, OnE)
	ON_BN_CLICKED(IDC_F, OnF)
	ON_BN_CLICKED(IDC_G, OnG)
	ON_BN_CLICKED(IDC_H, OnH)
	ON_BN_CLICKED(IDC_I, OnI)
	ON_BN_CLICKED(IDC_J, OnJ)
	ON_BN_CLICKED(IDC_K, OnK)
	ON_BN_CLICKED(IDC_L, OnL)
	ON_BN_CLICKED(IDC_M, OnM)
	ON_BN_CLICKED(IDC_N, OnN)
	ON_BN_CLICKED(IDC_O, OnO)
	ON_BN_CLICKED(IDC_P, OnP)
	ON_BN_CLICKED(IDC_Q, OnQ)
	ON_BN_CLICKED(IDC_R, OnR)
	ON_BN_CLICKED(IDC_S, OnS)
	ON_BN_CLICKED(IDC_T, OnT)
	ON_BN_CLICKED(IDC_U, OnU)
	ON_BN_CLICKED(IDC_V, OnV)
	ON_BN_CLICKED(IDC_W, OnW)
	ON_BN_CLICKED(IDC_X, OnX)
	ON_BN_CLICKED(IDC_Y, OnY)
	ON_BN_CLICKED(IDC_Z, OnZ)
	ON_BN_CLICKED(IDC_ENTER, OnEnter)
	ON_BN_CLICKED(IDC_SPACE, OnSpace)
	ON_BN_CLICKED(IDC_BS, OnBs)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_SUBTRACT, OnSubtract)
	ON_BN_CLICKED(IDC_MULTI, OnMulti)
	ON_BN_CLICKED(IDC_DIVIDE, OnDivide)
	ON_BN_CLICKED(IDC_DOUBLEPOINT, OnDoublepoint)
	ON_BN_CLICKED(IDC_COMMA, OnComma)
	ON_BN_CLICKED(IDC_FULLSTOP, OnFullstop)
	ON_BN_CLICKED(IDC_QUESTIONMARK, OnQuestionmark)
	ON_BN_CLICKED(IDC_EXCALMATORYMARK, OnExcalmatorymark)
	ON_BN_CLICKED(IDC_AT, OnAt)
	ON_BN_CLICKED(IDC_MONEY, OnMoney)
	ON_BN_CLICKED(IDC_PERCENT, OnPercent)
	ON_BN_CLICKED(IDC_LEFTPARENTHESIS, OnLeftparenthesis)
	ON_BN_CLICKED(IDC_RIGHTPARENTHESIS, OnRightparenthesis)
	ON_BN_CLICKED(IDC_EQUALMARK, OnEqualmark)
	ON_BN_CLICKED(IDC_SOLIDUS, OnSolidus)
	ON_BN_CLICKED(IDC_SMALL, OnSmall)
	ON_BN_CLICKED(IDC_BIG, OnBig)
	ON_BN_CLICKED(IDC_LEFT, OnLeft)
	ON_BN_CLICKED(IDC_RIGHT, OnRight)
	ON_BN_CLICKED(IDC_UP, OnUp)
	ON_BN_CLICKED(IDC_DOWN, OnDown)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSKBDlg message handlers
CSKBDlg::CSKBDlg(CWnd* pWnd) // modeless constructor
{
	m_pParentWnd = pWnd;
	m_pTargetWnd = NULL;
}

BOOL CSKBDlg::Create()
{
	return CDialog::Create(CSKBDlg::IDD);
}

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

	/////CenterWindow(GetDesktopWindow());	// center to the hpc screen    
	if(m_pTargetWnd == NULL)  ///目标窗口不能为空
    {
        return FALSE;
    }
    /// TODO: Add extra initialization here	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

/////////数字键
void CSKBDlg::ExecuteNumKey(UINT nVKey)  ///nVKey 16进制
{
    m_pTargetWnd->SetFocus();
    keybd_event(nVKey, 0, 0, 0);  ////按下
    keybd_event(nVKey, 0, KEYEVENTF_KEYUP, 0);  ///抬起
}

////字母键
void CSKBDlg::ExecuteLetterKey(UINT nVKey)
{
    if(IsLowerCase == TRUE)   ////小写
    {
        m_pTargetWnd->SetFocus();
        keybd_event(nVKey, 0, 0, 0);  ////按下
        keybd_event(nVKey, 0, KEYEVENTF_KEYUP, 0);  ///抬起
    }
    else
    {
        m_pTargetWnd->SetFocus();
        keybd_event(VK_SHIFT, 0, 0, 0);  ////按下shift
        keybd_event(nVKey, 0, 0, 0);  ////按下
        keybd_event(nVKey, 0, KEYEVENTF_KEYUP, 0);  ///抬起
        keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
    }   
}

////符号键
void CSKBDlg::ExecuteChrKey(UINT nVKey)
{
    m_pTargetWnd->SetFocus();
    keybd_event(nVKey, 0, 0, 0);  ////按下
    keybd_event(nVKey, 0, KEYEVENTF_KEYUP, 0);  ///抬起
}

///// "1"
void CSKBDlg::On1() 
{
    ExecuteNumKey(0x31);	
}

void CSKBDlg::On2() 
{
    ExecuteNumKey(0x32);
}

void CSKBDlg::On3() 
{
    ExecuteNumKey(0x33);
}

void CSKBDlg::On4() 
{
    ExecuteNumKey(0x34);
}

void CSKBDlg::On5() 
{
    ExecuteNumKey(0x35);
}

void CSKBDlg::On6() 
{
    ExecuteNumKey(0x36);
}

void CSKBDlg::On7() 
{
    ExecuteNumKey(0x37);
}

void CSKBDlg::On8() 
{
    ExecuteNumKey(0x38);
}

void CSKBDlg::On9() 
{
	ExecuteNumKey(0x39);
}

void CSKBDlg::On0() 
{
    ExecuteNumKey(0x30);
}

////  大小写切换
void CSKBDlg::OnCapslock() 
{
	if(IsLowerCase == TRUE)
    {
        IsLowerCase = FALSE;
    }
    else
    {
        IsLowerCase = TRUE;
    }
}

/////// "A"
void CSKBDlg::OnA() 
{
    ExecuteLetterKey(0x41);	
}

void CSKBDlg::OnB() 
{
    ExecuteLetterKey(0x42);
}

void CSKBDlg::OnC() 
{
    ExecuteLetterKey(0x43);
}

void CSKBDlg::OnD() 
{
    ExecuteLetterKey(0x44);
}

void CSKBDlg::OnE() 
{
    ExecuteLetterKey(0x45);
}

void CSKBDlg::OnF() 
{
    ExecuteLetterKey(0x46);
}

void CSKBDlg::OnG() 
{
    ExecuteLetterKey(0x47);
}

void CSKBDlg::OnH() 
{
    ExecuteLetterKey(0x48);
}

void CSKBDlg::OnI() 
{
    ExecuteLetterKey(0x49);
}

void CSKBDlg::OnJ() 
{
    ExecuteLetterKey(0x4A);
}

void CSKBDlg::OnK() 
{
    ExecuteLetterKey(0x4B);
}

void CSKBDlg::OnL() 
{
    ExecuteLetterKey(0x4C);  
}

void CSKBDlg::OnM() 
{
    ExecuteLetterKey(0x4D);
}

void CSKBDlg::OnN() 
{
    ExecuteLetterKey(0x4E);
}

void CSKBDlg::OnO() 
{
    ExecuteLetterKey(0x4F);
}

void CSKBDlg::OnP() 
{
    ExecuteLetterKey(0x50);
}

void CSKBDlg::OnQ() 
{
    ExecuteLetterKey(0x51);
}

void CSKBDlg::OnR() 
{
    ExecuteLetterKey(0x52);
}

void CSKBDlg::OnS() 
{
    ExecuteLetterKey(0x53);	
}

void CSKBDlg::OnT() 
{
    ExecuteLetterKey(0x54);
}

void CSKBDlg::OnU() 
{
    ExecuteLetterKey(0x55);	
}

void CSKBDlg::OnV() 
{
    ExecuteLetterKey(0x56);	
}

void CSKBDlg::OnW() 
{
    ExecuteLetterKey(0x57);
}

void CSKBDlg::OnX() 
{
    ExecuteLetterKey(0x58);	
}

void CSKBDlg::OnY() 
{
    ExecuteLetterKey(0x59);
}

void CSKBDlg::OnZ() 
{
    ExecuteLetterKey(0x5A);
}

////////符号

void CSKBDlg::OnEnter() 
{
    ExecuteChrKey(VK_RETURN);	
}

void CSKBDlg::OnSpace() 
{
    ExecuteChrKey(VK_SPACE);	
}

void CSKBDlg::OnBs()   ////BackSpace
{
    ExecuteChrKey(VK_BACK);	
}

void CSKBDlg::OnDel() 
{
    ExecuteChrKey(VK_DELETE);	
}

void CSKBDlg::OnAdd()  //// +
{
    ExecuteChrKey(VK_ADD);	
}

void CSKBDlg::OnSubtract()  //// -
{
    ExecuteChrKey(VK_SUBTRACT);	
}

void CSKBDlg::OnMulti()  ////*
{
    ExecuteChrKey(VK_MULTIPLY);	
}

void CSKBDlg::OnDivide() /// "/"
{
    ExecuteChrKey(VK_DIVIDE); 	
}

void CSKBDlg::OnDoublepoint() /// :
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0xBA);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起
}

void CSKBDlg::OnComma()   ///,
{
    ExecuteChrKey(0xBC);	
}

void CSKBDlg::OnFullstop() ///。
{
    ExecuteChrKey(0xBE);	
}

void CSKBDlg::OnQuestionmark() ///?
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0xBF);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnExcalmatorymark() ////!
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0x31);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnAt() ////@
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0x32);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnMoney() ///$
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0x34);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnPercent() /// %
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0x35);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起
}

void CSKBDlg::OnLeftparenthesis()  ///( 
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0x39);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnRightparenthesis() ////)
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0x30);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnEqualmark() ///=
{
    m_pTargetWnd->SendMessage(WM_CHAR, 0x3d, 0);  ///无虚键码	
}

void CSKBDlg::OnSolidus() ///"\"
{
    ExecuteChrKey(0xDC);	
}

void CSKBDlg::OnSmall()  /// <
{
	keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0xBC);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起
}

void CSKBDlg::OnBig() //// >
{
    keybd_event(VK_SHIFT, 0, 0, 0);  ////按下
    ExecuteChrKey(0xBE);
    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);  ///抬起	
}

void CSKBDlg::OnLeft() 
{
    ExecuteChrKey(VK_LEFT);	
}

void CSKBDlg::OnRight() 
{
    ExecuteChrKey(VK_RIGHT);	
}

void CSKBDlg::OnUp() 
{
    ExecuteChrKey(VK_UP);	
}

void CSKBDlg::OnDown() 
{
    ExecuteChrKey(VK_DOWN);	
}

⌨️ 快捷键说明

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