搭建好Visual C++2010与windows SDK fo windows7的开发平台以后,

小试牛刀,检验下开发windows7的下的tabletpc应用,

代码注释如下

#include <windows.h> #include <comdef.h> #include <msinkaut.h> #include <msinkaut_i.c> //包含windows SDK for windows7的核心tabletpc头文件 #include "resource.h" const TCHAR* gc_szAppName = TEXT("Basic Recognition"); // 建立轨迹指针,识别指针,轨迹画板指针 IInkCollector * g_pIInkCollector = NULL; IInkDisp * g_pIInkDisp = NULL; IInkRecognizerContext * g_pIInkRecoContext = NULL; / // //清除Com指针 / void CleanUp() // Release all objects { if (g_pIInkRecoContext != NULL) { g_pIInkRecoContext->Release(); g_pIInkRecoContext = NULL; } if (g_pIInkDisp != NULL) { g_pIInkDisp->Release(); g_pIInkDisp = NULL; } if (g_pIInkCollector != NULL) { g_pIInkCollector->Release(); g_pIInkCollector = NULL; } } windows窗口消息循环 LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { //窗口消息创建,注册窗口,并创建com指针接口 HRESULT hr; hr = CoCreateInstance(CLSID_InkRecognizerContext, NULL, CLSCTX_INPROC_SERVER, IID_IInkRecognizerContext, (void **) &g_pIInkRecoContext); if (FAILED(hr)) { return -1; } hr = CoCreateInstance(CLSID_InkCollector, NULL, CLSCTX_INPROC_SERVER, IID_IInkCollector, (void **) &g_pIInkCollector); if (FAILED(hr)) return -1; hr = g_pIInkCollector->get_Ink(&g_pIInkDisp); if (FAILED(hr)) return -1; hr = g_pIInkCollector->put_hWnd((long)hwnd); if (FAILED(hr)) return -1; hr = g_pIInkCollector->put_Enabled(VARIANT_TRUE); if (FAILED(hr)) return -1; break; } case WM_DESTROY: //退出消息循环,结束程序 PostQuitMessage(0); break; case WM_COMMAND: //清除轨迹 if (wParam == ID_CLEAR) { g_pIInkDisp->DeleteStrokes(0); InvalidateRect(hwnd, NULL, TRUE); } else if (wParam == ID_RECOGNIZE) { //获取识别结果,并显示最优化识别结果 HCURSOR hCursor = ::SetCursor(::LoadCursor(NULL, IDC_WAIT)); //获取轨迹指针用于识别 IInkStrokes* pIInkStrokes = NULL; HRESULT hr = g_pIInkDisp->get_Strokes(&pIInkStrokes); if (SUCCEEDED(hr)) { hr = g_pIInkRecoContext->putref_Strokes(pIInkStrokes); if (SUCCEEDED(hr)) { //利用识别指针获取识别结果 IInkRecognitionResult* pIInkRecoResult = NULL; InkRecognitionStatus RecognitionStatus; hr = g_pIInkRecoContext->Recognize(&RecognitionStatus, &pIInkRecoResult); if (SUCCEEDED(hr) && (pIInkRecoResult!= NULL)) { BSTR bstrBestResult = NULL; hr = pIInkRecoResult->get_TopString(&bstrBestResult); pIInkRecoResult->Release(); pIInkRecoResult = NULL; if (SUCCEEDED(hr) && bstrBestResult) { MessageBoxW(hwnd, bstrBestResult, L"识别结果", MB_OK); SysFreeString(bstrBestResult); } } g_pIInkRecoContext->putref_Strokes(NULL); } pIInkStrokes->Release(); } ::SetCursor(hCursor); } else { return DefWindowProc(hwnd, uMsg, wParam, lParam); } break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; } //注册windows 窗口类名 BOOL RegisterWindowClass(HINSTANCE hInstance) { WNDCLASSEX WndClassEx; WndClassEx.cbSize = sizeof(WndClassEx); WndClassEx.style = CS_HREDRAW | CS_VREDRAW; WndClassEx.lpfnWndProc = WndProc; WndClassEx.cbClsExtra = 0; WndClassEx.cbWndExtra = 0; WndClassEx.hInstance = hInstance; WndClassEx.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); WndClassEx.hIconSm = WndClassEx.hIcon; WndClassEx.hCursor = LoadCursor(NULL, IDC_ARROW); WndClassEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); WndClassEx.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); WndClassEx.lpszClassName = gc_szAppName; if (!RegisterClassEx(&WndClassEx)) { return false; } return true; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE , LPSTR , int nCmdShow) { if (!RegisterWindowClass(hInstance)) return 0; CoInitialize(NULL); //创建窗口 HWND hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, gc_szAppName, gc_szAppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (NULL == hWnd) { return 0; } // 显示窗口 ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 开始消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } CleanUp(); CoUninitialize(); return msg.wParam; }

VS2010启动界面

VS2010项目开发

程序界面,以及轨迹

轨迹识别结果

清除笔迹

需要源代码的请留言留下Email,我给大家发

本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!

基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-汉字手写轨迹输入相关推荐

  1. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-手写数学公式输入...

    搭建好Visual C++2010与windows SDK fo windows7的开发平台以后, 小试牛刀,检验下开发windows7的下的tabletpc应用,这个东西财务记账比较多, 大家先看效 ...

  2. 基于Visual C++2010与windows SDK fo windows7开发Windows 7的多点触摸特性应用程序(1)

    2008年5月28日,微软即将退休的精神领袖比尔·盖茨和首席执行官史蒂夫·鲍尔默共同在北圣地亚哥四季艾维亚拉洲际度假村举办的2008 D6 All Things数字化大会上向到场的嘉宾展示了windo ...

  3. 基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 方案和思路

    为什么做这个? 今年初接到一个项目任务,客户要求在自己的音视频平台系统中集成webrtc功能(原系统是基于SIP协议开发的,已经稳定运行多年,有很多客户).在比对了多家RTC产品的效果后,.他们对声网 ...

  4. 计算道路超高lisp_基于Visual LISP的地铁轨道综合图辅助设计程序开发

    基于Visual LISP的地铁轨道综合图辅助设计程序开发 基于Visual LISP的地铁轨道综合图辅助设计程序开发 吴凯伟,石玮荃 (中铁工程设计咨询集团有限公司,北京 100055) 摘 要:为 ...

  5. Kinect for Windows SDK v2.0 开发笔记 (十) 高清面部帧(1) FACS 介绍

    转载于:https://blog.csdn.net/dustpg/article/details/38892783 使用SDK: Kinect for Windows SDK v2.0 public ...

  6. matlab为什么要升维数,基于MATLAB和升维投影法的手写字符识别输入系统

    256 现代交际·2019年6期 作者简介:王思达,长春师范大学学生,研究方向:计算机科学与技术:刘勇,长春师范大学学生,研究方向:计算机科学与技术:袁汇灵, 长春师范大学学生,研究方向:计算机科学与 ...

  7. FOC 无感 代码 算法 电机控制 PMSM 基于中颍SH32F2601的洗衣机量产无感bldc控制方案,电机控制算法完全手写

    FOC 无感 代码 算法 电机控制 PMSM 基于中颍SH32F2601的洗衣机量产无感bldc控制方案,电机控制算法完全手写,MCU寄存器配置完全手写,未用到任何库文件 ID:34500065518 ...

  8. 基于Visua C++2010 与 Windows 7 SDK开发windows7 Shell应用(1)-搜索文件夹

    windows7 shell 就是windows7操作系统的的控制台 对于熟悉了命令行的人而言,用键盘调用程序比鼠标更快更省力 您可以用"Shell:"命令调用一切可以用资源管理器 ...

  9. 基于Visual C 2010开发Windows7应用 多点触摸图片处理应用程序 1 同时处理多张图片

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! wind ...

  10. 基于Visual C#2010开发Windows7应用 多点触摸图片处理应用程序(1)-同时处理多张图片...

    windows7的触摸功能开辟了一个电脑的全新世纪.从此,您可以丢掉鼠标和键盘,直接用手在屏幕上玩游戏.用笔来写字编辑文档,聊天. windows7最重要特性之一就是:支持多点触摸.比尔盖茨说,不久, ...

最新文章

  1. iOS手势之pinch
  2. [转载] 七龙珠第一部——第034话 红缎带军团
  3. StarUML 逆向工程插件加载失败问题解决
  4. 跑linux编译什么CPU速度快,linux 加快编译速度
  5. 灰度拉伸python_灰度变换之灰度线性拉伸(算法1)
  6. centos7修改命令行或图形界面启动模式
  7. OEL修改字符集失败 -bash: /root: is a directory
  8. Android期末复习题库
  9. cad断点快捷键_cad打断快捷键(cad十字路口路口怎么画)
  10. 尚硅谷JAVA基础笔记吐血整理
  11. Java中常见常用的类
  12. 光纤跳线的分类和概述
  13. Windows API串口编程详解
  14. 信息化时代,,生产制造管理系统该具备哪些功能?
  15. 半监督语义分割_paper reading part2
  16. ERROR 1010 (HY000): Error dropping database (can't rmdir './library', errno:
  17. [OHIF-Viewers]医疗数字阅片-医学影像-React/Redux 的好帮手Classnames
  18. 互联网日报 | 3月23日 星期二 | 京东集团8亿美元增持达达集团;阿里云盘正式启动公测;快手进军二手电商...
  19. HTML+CSS+JS个人网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计
  20. sharding-jdbc(ShardingSphere )、mycat、DRDS 三个分布式数据库中间件的简单介绍(纯理论说明)

热门文章

  1. 第jiu届蓝桥杯单片机省赛真题_第九届蓝桥杯EV 省赛试题
  2. DXGI 方式采集流程
  3. html好看英文字体,js显示漂亮的英文字体实例
  4. python 科研作图_科研作图软件(11种)
  5. java实习第一天日志
  6. SATA接口Raid、AHCI、IDE三种模式
  7. 计算机技术发展5大阶段,现阶段计算机技术应用及发展
  8. 微软笔试题三道(略微偏向竞赛题)
  9. 抛开理论公式,用符合直觉的方式理解四旋翼无人机控制
  10. SketchUp 更新插件,不用重启让更新生效