// COnscreenKeyboardDlg.cpp : implementation file
//
#include "stdafx.h"
#include "OnscreenKeyboard.h"
#include "OnscreenKeyboardDlg.h"
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_ICON_NOTIFY WM_USER + 10
#define TIMER_ID 101
/////////////////////////////////////////////////////////////////////////////
// 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:
//{{AFX_MSG(CAboutDlg)
//}}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)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COnscreenKeyboardDlg dialog
COnscreenKeyboardDlg::COnscreenKeyboardDlg(CWnd* pParent /*=NULL*/)
: CDialog(COnscreenKeyboardDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(COnscreenKeyboardDlg)
// 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);
}
void COnscreenKeyboardDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COnscreenKeyboardDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COnscreenKeyboardDlg, CDialog)
//{{AFX_MSG_MAP(COnscreenKeyboardDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_WM_RBUTTONUP()
ON_WM_MOUSEWHEEL()
ON_WM_LBUTTONUP()
ON_WM_SIZE()
ON_COMMAND(IDM_SHOW_KEYBOARD, OnShowKeyboard)
ON_UPDATE_COMMAND_UI(IDM_SHOW_KEYBOARD, OnUpdateShowKeyboard)
ON_COMMAND(IDM_HIDE_KEYBOARD, OnHideKeyboard)
ON_UPDATE_COMMAND_UI(IDM_HIDE_KEYBOARD, OnUpdateHideKeyboard)
ON_COMMAND(IDM_EXIT, OnExit)
ON_WM_SHOWWINDOW()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COnscreenKeyboardDlg message handlers
#define TAB 0x02
#define CAPSLOCK 0x03
#define SHIFT 0x04
#define CTRL 0x05
#define BSPACE 0x06
#define ENTER 0x07
#define ALT 0x08
#define WINDOW 0x9
#define LEFT 0x0A
#define RIGHT 0x0B
#define UP 0x0C
#define DOWN 0x0D
#define ESC 0x0E
#define PUP 0x0F
#define PDN 0x10
#define HOME 0x11
#define END 0x12
#define INS 0x13
#define DEL 0x14
#define WWW 0x15
BOOL COnscreenKeyboardDlg::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
//build the keyboard definition
//control row
AddKey(0x00,0x00,0); //signal row change
AddKey(0x00,ESC,10);
for(int fnkey = 0x70; fnkey < 0x7C; fnkey++)
{
AddKey(0x00,fnkey & 0xFF,10);
}
AddKey(0x00,INS,14);
AddKey(0x00,DEL,-10);
//first row
AddKey(0x00,0x00,1); //signal row change
AddKey('`','~',10);
AddKey('1','!',10);
AddKey('2','@',10);
AddKey('3','#',10);
AddKey('4','$',10);
AddKey('5','%',10);
AddKey('6','^',10);
AddKey('7','&',10);
AddKey('8','*',10);
AddKey('9','(',10);
AddKey('0',')',10);
AddKey('-','_',10);
AddKey('=','+',10);
AddKey(0x00,BSPACE,14); //backspace
AddKey(0x00,PUP,-12);
//second row
AddKey(0x00,0x00,2); //signal row change
AddKey(0x00,TAB,14); //tab
AddKey('q','Q',10);
AddKey('w','W',10);
AddKey('e','E',10);
AddKey('r','R',10);
AddKey('t','T',10);
AddKey('y','Y',10);
AddKey('u','U',10);
AddKey('i','I',10);
AddKey('o','O',10);
AddKey('p','P',10);
AddKey('[','{',10);
AddKey(']','}',10);
AddKey('\\','|',10);
AddKey(0x00,PDN,-12);
//third row
AddKey(0x00,0x00,3); //signal row change
AddKey(0x00,CAPSLOCK,18); //caps lock
AddKey('a','A',10);
AddKey('s','S',10);
AddKey('d','D',10);
AddKey('f','F',10);
AddKey('g','G',10);
AddKey('h','H',10);
AddKey('j','J',10);
AddKey('k','K',10);
AddKey('l','L',10);
AddKey(';',':',10);
AddKey('\'','\"',10);
AddKey(0x00,ENTER,16); //enter
AddKey(0x00,HOME,-10);
//fourth row
AddKey(0x00,0x00,4); //signal row change
AddKey(0x00,SHIFT,22); //shift
AddKey('z','Z',10);
AddKey('x','X',10);
AddKey('c','C',10);
AddKey('v','V',10);
AddKey('b','B',10);
AddKey('n','N',10);
AddKey('m','M',10);
AddKey(',','<',10);
AddKey('.','>',10);
AddKey('/','?',10);
AddKey(0x00,SHIFT,22); //shift
AddKey(0x00,END,-10);
//fifth row
AddKey(0x00,0x00,5); //signal row change
AddKey(0x00,CTRL,12); //ctrl
AddKey(0x00,WINDOW,12); //window
AddKey(0x00,ALT,12); //alt
AddKey(' ',' ',60);
AddKey(0x00,LEFT,12); //left
AddKey(0x00,UP,12); //up
AddKey(0x00,DOWN,12); //down
AddKey(0x00,RIGHT,12); //right
AddKey(0x00,WWW,-10); //http://WWW
CalcWidthHeight();
//put an icon for us in the system tray
//add us the the system tray
VERIFY(cSystray.Create(NULL, // Parent window
WM_ICON_NOTIFY, // Icon notify message to use
_T("Onscreen Keyboard"), // tooltip
m_hIcon, // Icon to use
IDR_TRAY_MENU)); // ID of tray icon
SetTimer(TIMER_ID,250,NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
void COnscreenKeyboardDlg::CalcWidthHeight()
{
pKeyWidth = 0;
pKeyHeight = 0;
KEYDEF * key;
POSITION pos = cKeys.GetHeadPosition();
long totalWidth = 0;
long longest = 0;
long rows = 0;
while(pos)
{
key = cKeys.GetNext(pos);
if((key->cNormal == 0x00) && (key->cShifted == 0x00))
{
rows++;
if(totalWidth > longest)
{
longest = totalWidth;
}
totalWidth = 0;
}
else
{
totalWidth += abs(key->cWidth);
}
}
CRect rect;
GetClientRect(rect);
pKeyHeight = rect.Height() / rows;
pKeyWidth = (int)(((double)rect.Width()) / ((((double)(longest)) / 10)));
}
void COnscreenKeyboardDlg::AddKey(
char pNormal,
char pShifted,
int pWidth)
{
KEYDEF * key = new KEYDEF;
key->cNormal = pNormal;
key->cShifted = pShifted;
key->cWidth = pWidth;
cKeys.AddTail(key);
}
void COnscreenKeyboardDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void COnscreenKeyboardDlg::DrawKey(CDC * dc, CRect & rc, KEYDEF * key, BOOL cHilight)
{
if(!cHilight)
{
rc.DeflateRect(1,1);
dc->FillSolidRect(rc,GetSysColor(COLOR_3DFACE));
dc->Draw3dRect(rc,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DDKSHADOW));
rc.DeflateRect(1,1);
dc->Draw3dRect(rc,GetSysColor(COLOR_3DLIGHT),GetSysColor(COLOR_3DSHADOW));
}
else
{
rc.DeflateRect(1,1);
dc->Fi
没有合适的资源?快使用搜索试试~ 我知道了~
screen_keyboard_src.zip_keyboard screen
共16个文件
h:5个
cpp:4个
dsp:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 47 浏览量
2022-09-23
23:48:28
上传
评论
收藏 20KB ZIP 举报
温馨提示
开发证券软件时的副产品,屏幕软件盘的实现,为有需要者提供参考。
资源详情
资源评论
资源推荐
收起资源包目录
screen_keyboard_src.zip (16个子文件)
OnscreenKeyboard.rc 6KB
OnscreenKeyboard.clw 1KB
res
OnscreenKeyboard.rc2 408B
OnscreenKeyboard.ico 1KB
OnscreenKeyboard.dsw 555B
OnscreenKeyboard.cpp 2KB
www.pudn.com.txt 218B
StdAfx.cpp 214B
resource.h 834B
OnscreenKeyboardDlg.cpp 20KB
StdAfx.h 987B
SystemTray.h 4KB
OnscreenKeyboard.h 1KB
OnscreenKeyboard.dsp 4KB
OnscreenKeyboardDlg.h 3KB
SystemTray.cpp 12KB
共 16 条
- 1
小贝德罗
- 粉丝: 70
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0