本篇是记录硕士期间开发的小软件。图形界面是基于MFC开发的,其中利用了OpenCV还有MySQL数据库。下面开始记录流水账式开发过程:

MFC框架

新建MFC项目,基于单文档,MFC标准项目,去掉工具栏
在这里插入图片描述在这里插入图片描述
由于微软在VS2013中不建议使用C/C++的传统库函数scanf、strcpy、sprintf等函数,所以直接使用这些库函数会提示C4996错误。VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C/C++函数。要想继续使用此函数,需要添加_CRT_SECURE_NO_WARNINGS预定义。或(项目->属性->C/C++预处理器->预处理器定义,添加_CRT_SECURE_NO_WARNINGS)

设置窗口属性
设置图标
打开资源视图,添加本地ICO图标,在res文件夹中添加图标资源
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//设置图标 IDI_ICON_SECLITE为图标资源ID
SetClassLong(m_hWnd, GCL_HICON, (LONG)AfxGetApp()->LoadIconW(IDI_ICON_SECLITE));
//设置右侧标题
SetTitle(TEXT("Version 1"));
//设置窗口位置和大小  (0,0)起点坐标x,y (800,500)窗口宽度和高度
MoveWindow(0, 0, 800, 500);
//将窗口移动到屏幕中央
CenterWindow();

利用上面的过程新建自己的项目界面,如下:
在这里插入图片描述
https://blog.csdn.net/mars_xiaolei/article/details/86088867
在这里插入图片描述

搭建内部框架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
https://blog.csdn.net/albertsh/article/details/52838419
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
树控件切换时会触发TVN_SELCHANGED消息(指定选定项从一项变为另一项)
在这里插入图片描述
在这里插入图片描述
IDD_DIALOG_AUTHEN
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CUserDlg 初始化m_user变量和m_name变量,并使用UpdateData将变量值显示到输入框控件中

https://blog.csdn.net/sinat_25923849/article/details/78889674

没有OnInitialDalog()函数,使用下面函数试试效果,效果是显示出来后又被默认背景刷新掉
在这里插入图片描述
https://bbs.csdn.net/topics/392373238?list=lz
https://bbs.csdn.net/topics/390847606?page=1
在初始化中画一次,则在后序的消息中,很有可能会导致各控件重画,这样就会把你原本画好的内容给刷掉了。
要么是放在对话框的OnPaint()中画,要么是放在picture control的子类中画,建议是放在picture control的子类中画,这样就会更好。

添加类CEployeePicture继承自CFromView,重载OnPaint()函数,对画框进行更新
https://blog.csdn.net/u010356524/article/details/53791831

在这里插入图片描述
不可行

重写CAutheDlg类的OnDraw方法,加入对图片的显示

https://blog.csdn.net/qwdpoiguw/article/details/72824626
https://blog.csdn.net/lff1208/article/details/79963301

更改静态控件static text中的值
GetDlgItem(IDC_DATA)->SetWindowTextW(data1);

https://www.cnblogs.com/zwh0214/p/6292036.html
https://www.cnblogs.com/ct0421/p/3242418.html
https://blog.csdn.net/Rxiang12/article/details/79672875
https://blog.csdn.net/boyxiaolong/article/details/6671703

https://www.cnblogs.com/ly941122/p/4546249.html

List Control
报表模式

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

https://bbs.csdn.net/topics/340166098
https://blog.csdn.net/zl007ok/article/details/6826386
http://www.jizhuomi.com/software/197.html

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
https://www.cnblogs.com/waimen/p/6600315.html
解决编辑控件键入回车退出对话框
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Error Lookup工具
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools

https://blog.csdn.net/seastars_sh/article/details/8228646

https://blog.csdn.net/wang15061955806/article/details/51145216

用内核对象进行线程同步
几乎所有内核对象都可以用来进行同步,对线程同步来说,这些内核对象中的每一种要么处于触发(signaled)状态,要么处于未触发(nonsignaled)状态。Microsoft为每种对象创建了一些规则,规定如何在这两种状态之间进行转换。例如,进程内核对象在创建的时候总是处于未触发状态。当进程终止时,操作系统会自动使进程内核对象变成触发状态。当内核对象被触发后,将永远保持这种状态,再也不会变回到未触发状态。(进程内核对象的内部有一个布尔变量,当系统创建内核对象的时候会把这个变量的值初始化为FALSE(未触发)。当进程终止的时候,操作系统会自动把相应的内核对象中的这个布尔值设为TRUE,表示该对象已经被触发)。

在这里插入图片描述

https://fishc.com.cn/forum.php?mod=viewthread&tid=78658&typeid=502

串口部分

在这里插入图片描述
https://blog.csdn.net/haiross/article/details/51566654
https://www.cnblogs.com/skyofbitbit/p/4210626.html

最终效果

在这里插入图片描述
在这里插入图片描述

Logo

更多推荐