MFC工程
李迟
李迟,男,已婚,字子徐,一字仲文,别号水田居士,木草山人。有一儿一女,李大锤和李大妞。来自广西岑山溪水之地,家在一垌之尾。毕业于桂林电子科技大学三院1专业。摄影师,金融学者,历史家,科学哲学爱好者,社会问题研究者,持证上岗者(架构师、项目管理师),爱好广泛而无精通者。古文、诗词、文学、小说、武侠、经济、社会等无所不涉。目前主要混迹于显示器、鼠标、键盘之间。于代码及兴趣之事中有所得,与好友谈之一二,足矣。
展开
-
USB HID学习:一点开发记录
某天,曾经的前同事找我,说有个USB项目。因为知道我当时离职在找工作,于是转给我,然后介绍客户给我。原创 2020-02-13 22:44:10 · 4287 阅读 · 12 评论 -
USB学习:hidapi库使用
hidapi是一个开源的操作 HID 设备的库,使用 C 语言实现,适用于 Windows、Linux 和 Mac OSX 平台。注意,这个库是针对 HID 设备的,其它 USB 设备(如 U 盘)不一定适合。原创 2020-02-12 23:37:47 · 23454 阅读 · 32 评论 -
USB HID学习:MFC检测USB拔插事件
MFC具备检测设备的消息,但需要手动添加。针对USB设备,需要注册对应的GUID方可。本文对此进行简单记录。 本省略对MFC机制的描述,仅描述主要的模块代码。原创 2020-02-11 23:26:10 · 4389 阅读 · 0 评论 -
USB HID学习:数据包分析
本文使用 Bus Hound 工具对 USB HID 设备数据包进行分析,并结合官方手册及网上文章进行整理。文中未提到的知识,建议移步参考资源。 以笔者经验,直接阅读协议无法直观理解,最好使用工具抓包,结合协议文档分析真实数据,ONVIF协议如是,IEEE802.3(802.11)如是,USB协议亦如是。原创 2020-02-09 23:53:48 · 8636 阅读 · 5 评论 -
USB HID学习:初识
USB协议本身非常复杂,如果一头扎入协议中研究,会走不出来。许多年前笔者就是因为协议过于复杂放弃研究,只留下“EndPoint”、“中断传输”这些概念。 本文开始的几篇文章将介绍一下笔者所了解的 USB 知识。虽然仅限于 HID 设备,但也能一窥 USB 门径。本着实用使用、适用合用之目的,暂且抛开 USB 协议本身,以一个门外汉的心态学习 USB HID 的开发。原创 2020-02-09 16:46:12 · 3118 阅读 · 0 评论 -
MFC小笔记:控件随窗口变化
一、需求当窗口大小变化时,如最大化、最小化时,控件位置和大小并没有变化,本文实现此功能。二、界面主界面为对话框,有最小化、最大化、关闭等功能。三、原理当窗口变化时,响应 OnSize 函数,并计算各控件位置,按比例缩放。四、编码4.1 变量定义在对话框类向导中添加 WM_SIZE 消息。其函数定义如下:afx_msg void OnSize(UINT nType, int cx...原创 2019-12-28 08:21:09 · 1151 阅读 · 0 评论 -
MFC小笔记:简单画图
一、需求本文介绍一些简单画图的功能函数。二、界面主界面为对话框,有最小化、最大化、关闭等功能。MFC基本原理不再介绍。三、功能画线定义:enum MYCOLOR{ WHITE = 0, GRAY = 1, LBLUE = 2, BLUE = 3,};CPen m_pen[5];初始化画笔: // 参数:样式、宽度、颜色 m...原创 2019-12-22 10:23:41 · 2186 阅读 · 1 评论 -
MFC小笔记:开机自动启动
一、需求本文实现MFC程序的开机自动启动功能。二、设计开机自动启动,可以通过注册表实现。在Run节点下,新建一个字段,包括程序名称、完整的路径。如果要取消自动启动,则删除该字段即可。三、编码代码如下:int SetAutorun(BOOL nEnable){ // 获取程序路径 CString sPath; GetModuleFileName(NULL, s...原创 2019-12-22 10:23:01 · 1132 阅读 · 0 评论 -
MFC小笔记:系统托盘实现
一、需求本文实现程序系统托盘。二、界面主界面为对话框,有最小化、最大化、关闭等功能。三、原理利用系统托盘类NOTIFYICONDATA,响应自定义消息,处理托盘鼠标事件。四、编码4.1 消息定义定义消息ID,必须大于WM_USER,为方便起见,可在stdafx.h中定义:#define WM_SHOWTASK (WM_USER+1) // 系统托盘事件在子对话框头文件声明...原创 2019-12-22 10:22:30 · 1022 阅读 · 1 评论 -
MFC小笔记:上下控件
一、需求上下控件实际上是由edit控件和spin控件组成的,共2个控件。为方便描述,称为上下控件,即可以点击spin控件上下按钮增减数值,当通过上下按钮操作时,edit控件中同时显示数值的变化。另外,也可以在edit控件中直接输入数值。二、设计1、排放edit控件和spin控件。2、设置spin控件属性:Auto Buddy为True,按钮控件顺序进行关联。否则无法关联。Set ...原创 2019-12-22 10:21:55 · 1262 阅读 · 0 评论 -
MFC小笔记:父子窗口传递消息
一、需求MFC程序可能有许多个对话框,有主对话框,有子对话框,本文介绍父子对话框之间的消息传递。适用于外部事件、外部通知等事件。为简单起见,只针对父窗口传递消息到子窗口。二、界面主界面为对话框,上有一Button,点击进入子对话框(使用非模态方式)。对话框界面有Static控件输出信息。过程省略。三、原理自定义消息ID。在子窗口中响应该消息,事件发起者使用SendMessage函数发送...原创 2019-12-22 10:20:43 · 2455 阅读 · 0 评论 -
MFC小笔记:TabCtrl父子窗口传递消息
一、需求MFC界面有一个设置对话框,实际使用TabCtrl+子对话框的形式。在子对话框中设置参数时,需要将结果反馈至父窗口下方。这样统一信息输出。本文解决问题:如何在子窗口中,获取父窗口句柄,并在父窗口Static控件输出信息。二、设计对话框界面,主窗口为一TabCtrl,下方为一Static控件。过程省略。三、编码在子对话框头文件声明窗口指针:CWnd* m_pTabParentW...原创 2019-12-22 10:19:48 · 2116 阅读 · 0 评论 -
MFC笔记:初始化tab控件一点改进
背景:MFC工具带有tab标签,作为导航。需要在对话框初始化时进行初始化。一、流程简述实现此功能需要做如下事情:创建主对话框、多个子对话框。子对话框需要设置属性:外观Style为Child,Boarder选None。关联tab标签控件变量(也可以直接用控件ID)。初始化,子对话框添加到tab标签上。响应点击函数,以便切换对话框。下面先列出原始版本,分析问题,再解决问题。...原创 2019-12-22 10:18:27 · 1083 阅读 · 3 评论 -
ffmpeg 0.8.7在windows环境mingw环境的编译
最近又接触了FFMPEG,想起当年初到公司时的情景,领导安排我更新当前所用的FFMPEG,那时公司还没有多少人接触嵌入式Linux。现在虽然公司还是不重视嵌入式基础,但“交叉编译”这类术语,很多人也有了认知。原创 2015-06-30 21:10:57 · 776 阅读 · 0 评论 -
我的YUV播放器MFC小笔记:设置picture控件背景为黑色、窗口缩放
图像的显示主要使用picture控件,一般播放器,在初始化时,播放画面的区域背景都是黑色的,在YUV播放器,也如此。但在网上找了很久的资料才实现该功能,其实说白了,代码很简单,在OnPaint函数中将picture画为黑色即可。原创 2015-08-15 23:35:55 · 2438 阅读 · 5 评论 -
我的HEVC码流分析工具MFC小笔记:树形控件使用及窗口缩放
大约1个半月前,发布了自己写的HEVC码流分析工具。当时的版本显示语法元素使用是的Edit控件。很多主流分析工具都使用树形控件,看上去觉得比较高端,于是在纠结一天后下定决心自己也实现树形的HEVC语法显示。经历漫长的业余时间,终于完成了,于是便有了此文。原创 2015-11-18 21:35:11 · 1211 阅读 · 2 评论 -
完成一个YUV文件播放器
前面匆忙写了很多篇文章,虽然都很简单,但着实花了不少时间去研究的。几年前写了YUV转换RGB的代码,当时只限于转换成BMP来测试正确性。后来一直使用YUV Player Deluxe来看YUV文件,但其支持格式不够多。前段时间下定决定,将以前写的YUV转换代码完善一下,尽自己能力转换各种YUV格式。一来好久没练练MFC了(我在考虑要不要学C#),二来也写个工具自己使用。原创 2015-08-21 13:07:24 · 10330 阅读 · 3 评论 -
VS2003创建动态库的一点笔记
背景:与工作有关的,具体的细节就不说了(这跟某些人说“由于工作性质,我的单位名称不方便透露”等是一样的)。大意是写一个基于socket的程序,可运行于Windows,也要运行于Linux,所谓的“跨平台”。使用C++,但只使用到其中的deque、string及fstream这些东西,其它的还是停留在C层面。在Linux写代码比较爽,一个头文件,一个CPP文件,加一个Makefile,可生成可执原创 2011-08-23 11:47:58 · 1100 阅读 · 0 评论 -
SDL_gfx-2.0.23在windows平台下的编译及例子
SDL_gfx是SDL的一个扩展库,包括了许多图形相关的操作函数,本文介绍该库在Windows平台使用VS2003编译过程,并给出一个简单的例子。SDL_gfx主页地址:http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx,最新版本是2.0.23,去年年底发布的。原创 2012-05-02 14:46:11 · 4442 阅读 · 8 评论 -
Windows下的Makefile
有时想写几个小程序作为测试用,又不想开虚拟机,也不想开VS。只想简单用个编辑器写完,在命令行里编译运行看结果。于是就自己整理了一个在Windows下可用的Makefile。我似乎对Makefile情有独钟,接触Linux后,搞了驱动的Makefile模板,应用程序的Makefile模板(而且还搞了好几套不同应用场合的模板),现在又搞Windows平台的模板。可见本人的确是无事找事做之人。闲原创 2012-08-02 09:17:30 · 2088 阅读 · 0 评论 -
MFC小笔记:滑动条与编辑框
需求:有一个滑动条(IDC_SLIDER1)和一个编辑框(IDC_EDIT1),当滑动条变化时,数值在编辑框中同时显示。添加NM_CUSTOMDRAW响应事件,代码如下:void CCameraDlg::OnCustomdrawSliderShutter(NMHDR *pNMHDR, LRESULT *pResult){ LPNMCUSTOMDRAW pNMCD原创 2012-09-29 13:33:46 · 2615 阅读 · 0 评论 -
SDL 1.2.14在windows平台下的编译及例子
背景:初次接触SDL,大约是当初做毕业设计时。如今再次接触,只换了平台而已,但事是人非,年华似水。曾经的理想,如今只有不停写代码、写代码,似乎除了这事情,别的不知做什么了。从本文开始,将发布一些在Windows下开发的文章。其实,以我的习惯,不太想称写代码为“开发”,这名词现在还当不起。然而大环境如此,不得不这样做。就像一个人很牛,如果不写几篇文章,不搞几个作品,展示给别人,别人是看不到的原创 2011-12-08 11:32:31 · 1688 阅读 · 0 评论 -
SDL学习——画图、点阵显示
很久以前,发表了几篇SDL在Windows编译的文章,同时也参考网上的一个十分简单的例子写了测试的程序,本文章将以此为基础并添加自己的代码。回首第1篇关于SDL的文章,那已是去年12月份写的了,时间过得真快。本文主要写一下在SDL中如何画像素点,以及如何显示字符(中文、英文)。画像素点:static void SDL_PixelNolock(SDL_Surface* surfa原创 2012-09-29 13:43:38 · 3312 阅读 · 0 评论 -
完成一个分析H264码流的工具
最近又开始搞视频相关的东西了。之前一直对H264有畏惧,觉得太难,现在开始慢慢去接触它,了解它。无意中,看到网上有人对H264码流进行分析。地址:http://blog.csdn.net/leixiaohua1020/article/details/17933821。有商业的工具,比如H264VideoESViewer,不过要钱,而且很贵,公司花钱买了一个(真的是“一个”),只有一个人的电脑上装有原创 2014-02-28 18:00:16 · 12014 阅读 · 13 评论 -
解决h264bitstream的一个bug
上个月着手写的那个H264码流分析工具基本完成基本的功能,为了显摆,还在部门公布了,不过使用效果不及几十刀的正牌分析工具那样功能强大,速度快。但是,自己从这里面学到了一些东西,还是不错的。当然,肯定是向着更高更强的层次看齐。——所以那个工具还在完善中。上周同事拿了一下他自己录的视频给我,我用那个工具打开,发现界面显示的宽、高显示不对,SPS中的分析的字段不正确(对,就是工具分析后的参数不正确)原创 2014-03-22 12:47:14 · 2640 阅读 · 3 评论 -
我的YUV播放器MFC小笔记:右键菜单事件和非标题实现鼠标拖动
鼠标右键弹出菜单代码如下:原创 2015-08-16 00:08:57 · 853 阅读 · 0 评论 -
我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
YUV播放器中,显示界面(主窗口)和设置界面分离,所有参数均在Setting子窗口设置,故需要主窗口和子窗口中实现参数传递。下面是方法。原创 2015-08-15 23:25:49 · 1201 阅读 · 0 评论 -
我的YUV播放器MFC小笔记:解析文件名称
为了方便播放器直接播放,也为实现所谓智能识别文件分辨率和格式,对文件名称进行解析,代码如下:原创 2015-08-16 10:43:25 · 1293 阅读 · 0 评论 -
我的YUV播放器MFC小笔记:注册表读写
在使用YUV Player Deluxe时,发现其可保存上一次的参数,研究之后,才知道它是使用注册表来实现的。下面是YUV播放器与注册表有关的函数接口,注册表与了我的大名外,其它值是参照YUV Player Deluxe的。在写这篇文章时,还没有空完全实现播放参数的保存,主要是用户自定义的分辨率的添加和删除,还要排序。有点工作量。原创 2015-08-16 00:17:37 · 882 阅读 · 0 评论 -
我的YUV播放器MFC小笔记:添加删除自定义分辨率
在最初设计YUV播放参数时,就考虑参数的保存,即使用注册表方式,前文已述。但直到后来才解决几个技术问题,方得以写此文章。原创 2015-08-19 22:45:39 · 965 阅读 · 0 评论 -
我的YUV播放器MFC小笔记:unicode编码、宽字符
以前的MFC工程,字符集都是基于多字节的,而现在这个工程,无意间使用unicode字符集,在其过程中,有诸多函数使用不同于以前。当然,建立项目后也是可以在项目属性中修改字符集的。这篇文章记录一下关于unicode工程的东西。回想来,这几天陆续写的MFC文章差多完结了。此系列估计不再写了。而昨天晚上发布的4.0版本,是完结版。这个工具也算是完成了。原创 2015-08-19 23:01:03 · 827 阅读 · 0 评论 -
libjpeg在windows下的编译
以前搞图片在LCD屏上显示的时候,曾经在Linux下编译过libjpeg,现在再次编译,不过换了平台而已。本文使用的编译器为VS2003,编译的libjpeg为最新版本,即jpeg-8c。 编译步骤:1、添加环境变量PATH:C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin2、解压jpegsrc.v8c.tar.g原创 2011-12-08 11:35:39 · 2889 阅读 · 0 评论