求助,WPF触摸屏虚拟键盘

求助,WPF触摸屏虚拟键盘,第1张

(1)自己在程序中开发虚拟键盘

这个是最先想到的,本人用C#进行开发,所以只关注C#相关的虚拟键盘开发。看了一些开发的帖子,自己开发虚拟键盘的关键在于:不要使用类似按钮这样控件去开发键盘,因为这些控件会使输入框的焦点转移。恰当的方式是使用图片去模拟键盘,然后通过判断鼠标点击的坐标位置计算出点击的是哪一个按键。其他的细节就不深究了。

相关链接:

A Software Virtual Keyboard for Your WPF Apps

On-screen Keyboards

Touchscreen Keyboard UserControl

.NET Winform Keyboard control

(2)使用windows自带的屏幕键盘(osk.exe)

考虑过,但是屏幕只有10.4寸,键盘太小,电阻式触摸屏上手根本点不到,太费劲了。除非屏幕够大,否则pass。win XP 下如果精简过,可以在网上下载到XP屏幕键盘的文件osk.exe和msswch.dll,放到系统的system32文件夹下,就可以通过运行osk.exe调出屏幕键盘。

参考链接:

Keyboard on the screen in WinForms

(3)使用其他屏幕键盘软件

开始没有考虑使用这个,最后发现这个是最简单有效的。只推荐这个:

虚拟屏幕键盘(Hot Virtual Keyboard) v5.3.1.0中文绿色版

Hot Virtual Keyboard – 华丽的屏幕键盘

这个软件非常好用,可以完全替代系统自带的屏幕键盘,而且还可以自定义各种风格的键盘。建议有米的同学们都购买支持正版。

[DllImport("user32.dll")]

        private static extern int keybd_event(Keys bVk, byte bScan, KeyEventType dwFlags, int dwExtralnfo)

这是Win32的API,可以模拟键盘事件。曾用它做过远程协助。

C语言模拟键盘代码如下:

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRszCmdLine,intiCmdShow)

{

MSGmsg

if(!MyRegisterClass(hInstance))

{

returnFALSE

}

if(!InitInstance(hInstance,iCmdShow))

{

returnFALSE

}

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg)

DispatchMessage(&msg)

}

returnmsg.wParam

}

//函数:ShowKey

//作用:实现在窗口中显示按键信息

voidShowKey(HWNDhwnd,intiType,char*szMessage,WPARAMwParam,LPARAMlParam)

{

staticchar*szFormat[2]={"%-14s%3d%c%6u%4d%5s%5s%6s%6s",

"%-14s%3d%c%6u%4d%5s%5s%6s%6s"}

charszBuffer[80]

HDChdc

ScrollWindowEx(hwnd,0,-yChar,&rc,&rc,NULL,NULL,SW_INVALIDATE)

hdc=GetDC(hwnd)

SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT))

TextOut(hdc,

xChar,

rc.bottom-yChar,

szBuffer,

wsprintfszBuffer,

szFormat[iType]。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11788181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存