随笔分类 -  VC++

摘要:C语言,用json文件存储tree: 1.读取和保存都用递归算法遍历,可以保存任意树结构,相比用INI文件,一致性更好,当然用数据库功能更多更好2.json数据全部用节点最方便,缺点存储的json文件末端有一个空的{},不太美观3.json文件读入时最好判断编码,尤其是对手工编辑的文件4.json的 阅读全文
posted @ 2025-12-07 15:07 XGZ21 阅读(22) 评论(0) 推荐(0)
摘要:Json //程序用到了网上比较流行的Cjson开源库,可以在网上搜索下载,有两个文件(cjson.h和cjson.c),放到目录下即可//递归遍历打印时,用{}区分数据是在哪个节点下,实际应用中若是要用通用的方式解析未知结构的json数据,可能把数据加载到Tree上会比较清晰。// JsonTes 阅读全文
posted @ 2025-11-22 09:59 XGZ21 阅读(16) 评论(0) 推荐(0)
摘要:MFC的消息反射,主要是用在 控件的封装和继承 因为控件为了方便使用,要自己处理通知,但是为灵活性,要开放给用户使用。 以MFC VisualStadio 风格的默认界面为例,树节点的双击事件怎么用。 1. 在CViewTree 中处理树节点双击事件的方法:1.1 用类向导或手工加入通知处理,默认是 阅读全文
posted @ 2025-09-29 13:00 XGZ21 阅读(27) 评论(0) 推荐(0)
摘要:#pragma comment(lib,"version.lib") //主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]] //Major_Version_Number.Minor_Version_Number[Revision_Number[.Build_Number]] int G 阅读全文
posted @ 2025-04-04 17:43 XGZ21 阅读(66) 评论(0) 推荐(0)
摘要:UNICODE编译环境: RTF字符串的显示: 如果是CRichEditView,可以直接用SetWindowText,输入的RTF字符串是UNCODE编码。 如果是CRichEditCtrl,可以发消息显示,输入的字符串是UNCODE编码 int CNoteView::SetRTF(TCHAR* 阅读全文
posted @ 2024-09-29 19:24 XGZ21 阅读(86) 评论(0) 推荐(0)
摘要:MFC 编程,添加了一个CMFCToolbar工具条,奇怪的是每次运行工具条的位置都会后移一段距离。 在网上搜了一下,也没找到原因。 今天浏览了一下代码,找到了原因 在框架的OnCreate中开始就创建了新工具条,然后就设置了停靠位置 但是框架默认自带的工具条却在后面,重新计算了位置,结果后移了,把 阅读全文
posted @ 2024-07-22 09:12 XGZ21 阅读(81) 评论(0) 推荐(0)
摘要:RichEdit控件失去焦点后,选中文本不再高亮显示。 有两种方法可以改变,使得控件失去焦点仍然保持高亮: 方法一:创建控件时设置ES_NOHIDESEL风格 m_hWndREdit = CreateWindow(_T("RichEdit20W"), NULL, //RICHEDIT_CLASS R 阅读全文
posted @ 2023-08-12 08:19 XGZ21 阅读(222) 评论(0) 推荐(0)
摘要:可以放在头文件中,不需要资源文件,在程序中随时象子程序一样调用。 运行效果如图: 相关程序: 对话框的调用: 调用时输入对话框的提示和默认字符串,返回输入字符串指针,用完后注意delete,因为字符串为了长度可变,是在函数中根据输入分配的空间。 wchar_t* p = CXH::InputStrW 阅读全文
posted @ 2023-08-04 11:16 XGZ21 阅读(190) 评论(0) 推荐(0)
摘要:Rtf格式文本的读写,向控件发送 EM_STREAMIN 和 EM_STREAMOUT 消息,控件把格式文本显示或从把显示内容转化为格式文本。 接口是用户定义的回调函数,格式文本由参数DWORD_PTR dwCookie传递。 从控件读出RTF文本,参数用string 比较好,因为消息处理是根据文本 阅读全文
posted @ 2023-08-01 12:51 XGZ21 阅读(393) 评论(0) 推荐(0)
摘要:TreeCrtl树的节点可以随意的添加,删除,移动。树保存到数据库中,并能从数据库读出还原。 树节点的LPARAM存放ID,这个ID是数据表自增长主键。 1.数据库中读出,按PID,SID顺序,这样读出的第一个为root2.读出的数据存入list3.创建root节点,把root放入map,从list 阅读全文
posted @ 2023-07-31 13:52 XGZ21 阅读(119) 评论(0) 推荐(0)
摘要:1.单个文件的windows VC程序,不用资源文件。在win32模板程序基础上改。 2. 菜单 和 热键 的代码添加 3. 模式对话框的代码添加。 程序运行界面,最简的win32程序 代码如下,单个文件,比较麻烦的就是对话框。 2023-7-10 修改: 模式对话框之前用MSDN中直接写内存的例子 阅读全文
posted @ 2023-07-09 16:31 XGZ21 阅读(102) 评论(0) 推荐(0)
摘要:字典的音标有的是用 Kingsoft Phonetic Plain 字体,有的是用KK 字体,对应的编码也不同, 输出时可以设置对应的字体,但是需要安装对应的字体,程序中还要改字体。 统一改成UTF16后就可以统一输出了,window程序一般都用UTF16,接口转换也比较方便。 对应的转换关系可以在 阅读全文
posted @ 2023-07-08 11:06 XGZ21 阅读(160) 评论(0) 推荐(0)
摘要:1 WIn32 SDK 程序,尽量放在一个文件中,主要用到 Tree,ListView,Edit 控件。 2 把控件封装成类,但不封装窗口回调函数。类实例为全局变量,方便消息回调函数调用执行。这样做最简单。 3 Edit控件处理按键输入,模仿shell执行SQL查询 4 打开数据库文件时若没有此文件 阅读全文
posted @ 2023-05-23 14:14 XGZ21 阅读(649) 评论(0) 推荐(0)
摘要:TreeView控件老是用的稀里糊涂的,写个测试程序总结一下基本用法 要注意点: 1.控件是发通知给父窗口处理,因此消息中鼠标的坐标不是相对控件的,要从屏幕坐标转换来。 2.通知消息的返回值 要参考文档,0 一般是允许默认处理,非0 则阻止默认处理。 3.通知消息参数用LPARAM传递,不同的控件起 阅读全文
posted @ 2023-05-08 17:58 XGZ21 阅读(834) 评论(0) 推荐(0)
摘要:在WIN11中用VS2022编写 小体积的绿色单文件,支持密码保护,XP到WIN11都能运行的数据库程序 1. 用VC60 建立一个Win32工程,VC60建立的工程默认是字节型的。2. 用VS2010 读取并转换为2010格式,再用VS2022 读取,选择SDK和平台都不升级3. 把 wxsqli 阅读全文
posted @ 2023-05-03 10:06 XGZ21 阅读(569) 评论(0) 推荐(0)
摘要:Windows程序调用OpenCV进行图像捕捉和处理显示 1. OpenCV的视频接口VideoCapture 很简洁,显示可以直接把图片帧数据转换成BMP,用StretchDIBits显示。 2. Windows用BMP位图显示,BMP位图是行数据4字节对齐的,Y轴是倒的。和Mat数据转换的时候要 阅读全文
posted @ 2022-09-02 08:46 XGZ21 阅读(961) 评论(0) 推荐(0)
摘要:// MDX2.cpp : Defines the entry point for the application.//// 1. 改成unicode以支持音标和中文// 2. 改用词库比较大的 21世纪英汉汉英双向词典// 3. 在之前的基础上增加了二分法搜索起始段,在段里面再查找关键字。// 4 阅读全文
posted @ 2022-08-18 11:58 XGZ21 阅读(102) 评论(0) 推荐(0)
摘要:用Win32 SDK 写的英语小词典,用朗文英英词库,词库是一个TXT文件, 显示用 RichEdit控件, 发音用TTS 采用Muti Byte编码,没法显示音标,可以即时查找单词,速度0.1s以下,即使顺序查到Z字母也在0.2秒以内。 如果用unicode,可以完美显示音标和中文,但是查找速度非 阅读全文
posted @ 2022-08-16 16:06 XGZ21 阅读(233) 评论(0) 推荐(0)
摘要:学习了一下OTSU算法,写成程序,加深理解。 这个算法是用来计算最优全局阈值的,所以对光照不均问题似乎不适用。按算法的原理,背景灰度有大的梯度时,会被分割成前景和背景。 对背景一致的图片的分割比较好,其实就是图片整体明暗变化时能自动调节阈值。好比白天到黑夜,阈值自动变。 程序如下: // XBMPV 阅读全文
posted @ 2022-07-27 17:04 XGZ21 阅读(118) 评论(0) 推荐(0)
摘要:拿知乎上的一张图练练手,光照是斜对角,全局二值化阈值20,一个角太白;改为全局80,另一个角太黑。 就把图分成4x4,16个小方块,用一个阈值矩阵手工搞,虽说是滥竽充数,好歹也弄出来了。 程序段: void CXDTS1View::OnTestTest1() { // TODO: Add your 阅读全文
posted @ 2022-07-26 18:49 XGZ21 阅读(88) 评论(0) 推荐(0)