![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 73
Pafey
这个作者很懒,什么都没留下…
展开
-
一个简单的基于Qt的MVC框架
这个示例展示了如何使用Qt搭建一个简单的MVC框架,其中模型中的操作在子线程中处理。你可以根据需要扩展这个框架,添加更多的功能和复杂性。希望这个示例对你有帮助!原创 2024-07-11 17:10:01 · 366 阅读 · 0 评论 -
重编译 microsip 和 pjsip 支持 mp3 录音
使用 MicroSip 源码编译后,在录音配置界面虽然有 mp3 格式选项,但是实际录音后不会生成mp3 文件夹,而选择wav格式却可以正常生成 wav 文件。经测试发现需要重新编译 pjsip 工程,加入 mp3 编码才可以。.........原创 2022-07-28 18:57:46 · 1141 阅读 · 0 评论 -
Unicode 和 UTF8 互转
亲测可用,备份留用。C++/MFC UTF8 转 Unicodechar* U8ToUnicode(char* szU8){ //UTF8 to Unicode //预转换,得到所需空间的大小 int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);...原创 2014-11-09 00:31:03 · 754 阅读 · 0 评论 -
回调函数的别样理解
对回调函数一知半解,找了些文章看看,可能是我悟性太差吧,看不打明白,或者有些写的就不够通俗易懂. 直到遇到这篇07年的老文,原来到处是回调啊.http://blog.csdn.net/tingsking18/article/details/1509224另外有个发现,零几年的文章往往质量比较优质,现在的很多文章往往觉得很浅 是我们太浮躁,急功近利了么?...原创 2018-03-22 10:05:49 · 140 阅读 · 0 评论 -
电脑通过 adb 控制安卓手机(1台或多台)自动加微信
最近做了个需求,从电脑上通过数据线控制手机打电话和自动添加微信好友。查找一番,很快有了方向,那就是通过 adb工具,即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备(也就是手机)交互。好了,知道用什么就好整了,下面简单介绍下过程1.下载adb工具adb 官网下载:http://adbshell.com/u...原创 2018-03-28 16:03:40 · 14476 阅读 · 9 评论 -
MFC 通过 http (post/get) 访问WEB(接口)服务器,并取得服务器返回数据
关键系统函数CHttpConnection* CInternetSession::GetHttpConnectionCHttpFile* CHttpConnection::OpenRequestCHttpFile::SendRequestCInternetFile::Read访问接口函数//strMethod:类型包含 POST/GET ,strUrl访问的网址,strPos...原创 2018-06-12 16:17:11 · 8701 阅读 · 7 评论 -
MFC 下载网络文件到本地 利用 CHttpFile 和 URLDownloadToFile 【可设超时及进度】两种方式
说明方法1较为简单,通用的多,但在某些环境下可能出现未知错误(也有可能你碰不到,反正我是碰到了)。 方法2实现相对麻烦点,但可设置超时时间以及进度展示,但要实例化一个LPBINDSTATUSCALLBACK 子类,在这个子类中去实现。这个相对好用点,方法1遇到的错误的情况,用方法2却可以正常使用。 LPBINDSTATUSCALLBACK 这个子类代码没有贴出来,放在文未,可点击下载。...原创 2018-06-12 16:47:39 · 4131 阅读 · 0 评论 -
MFC 上传文件函数 (利用 CHttpFile 上传 )
上传本地文件至服务器指定位置//上传本地文件至服务器指定位置BOOL UploadFile(LPCTSTR strURL, //负责接收上传操作的页面的URL LPCTSTR strLocalFileName) //待上传的本地文件路径{ ASSERT(strURL != NULL && strLocalFileName != NULL);...原创 2018-06-12 16:58:24 · 3866 阅读 · 1 评论 -
安装 emoji 字体
//安装emoji字体void InsertEmojiFont(){ CString sSourceDir =GetExePath()+_T("\\font\\");//exe路径 CString sFontFileName=_T("SEGUIEMJ.TTF"); //字体名称(将显示在字体对话框中). CString sFontName=_T("Segoe U...原创 2018-06-28 13:59:09 · 7014 阅读 · 0 评论 -
C++ TR1 正则表达式
C++ TR1 正则表达式OverviewThis article is written for the benefit of someone familiar with regular expressions but not with the use of regular expressions in C++ via the TR1 (C++ Standards Committee Tech...转载 2018-09-26 11:41:21 · 712 阅读 · 0 评论 -
vs2015 dll 消息传递字符串方法(string 异常)
同样的代码在 vs2008 的dll中,用 string 可以传递。换到 vs2015 中就异常,原因可能涉及到 STL 不同模块下内存释冲突问题,很是头大。用char* 的话内存申请和释放又很麻烦。改为使用 char 数组形式可以替代。如下 ... if (NULL != g_hWndCIO) { char buf[512] = {0}; sprintf_s(buf, "%s",...原创 2019-02-27 17:09:00 · 851 阅读 · 0 评论 -
dll导出类比较好的方式
看了篇好文,dll导出类的,之前已经胡乱写,以后可以参考这个规范前言/引用转自:编写DLL所学所思(2)——导出类 参考:HowTo: Export C++ classes from a DLL这种方式是比较合适的,跟com类似。结构是这样的: 导出类是一个派生类,派生自一个抽象类——都是纯虚函数。使用者需要知道这个抽象类的结构。DLL最少只需要提供一个用于获取类对象指...原创 2018-03-20 16:56:15 · 5774 阅读 · 6 评论 -
SQLite 3 特定需求语句
1.以某个字段结果的长度大小来排序,示例:用于模糊匹配关键字,优先匹配吻合度高的SELECT * FROM "REQ_ANS_DATA" WHERE name like '%.spec' ORDER BY length(CONDITION) DESC;2.某列结果去重复-DISTINCTSELECT DISTINCT ANSWER FROM "REQ_ANS_DATA" WHERE name li原创 2018-01-02 16:41:48 · 409 阅读 · 0 评论 -
C++ 资源大全
转自:原文链接关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Templat转载 2016-05-31 15:01:31 · 525 阅读 · 0 评论 -
Log4Cpp 使用实例
Log4Cpp 的概念及简介自行百度,网络上已经很齐全了。下载编译呼,得到了log4cpp.dll 和 log4cpp.lib 以及 include 头文件等内容。封装了个Log4Cpp的使用类,输出的效果如下:[2017-02-20 16:09:51.910](NOTICE)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-原创 2017-02-20 18:21:10 · 3572 阅读 · 1 评论 -
获取汉字首拼函数(据说该方法来自BCB函数库)
之前项目有个需求是要支持拼音搜索姓名,那么首先得保持姓名的首拼字母,那么字母获取汉字的首拼呢?经过网络搜索及测试,发现有个方法比较靠谱,据说是BCB的函数库,反正里面的实现原理是看得头疼,至今未解。std::string ConvertHZToPY( const char* strChs ){ static int li_SecPosValue[] = { 1601, 1637原创 2017-03-02 18:19:37 · 914 阅读 · 0 评论 -
QT 下 SQlite3 数据库加密及 CppSQLite3 操作数据库加密
由于最近项目需要考虑本地数据的安全性,避免谁都可以找到数据库文件然后右键-记事本打开。。。所以研究了下SQLite3本地数据库加密的方法,百度之,有两种,一是加密数据后存入数据库,二是整个加密数据库;如果选一改地方实在太多,所以一直找直接加密sqlite数据库的方法;然后各种搜索,整合后可行的方式是使用sqlite预留的加密接口,具体编码是用wxsqlite的加密模块;1.原创 2016-07-15 10:10:25 · 10007 阅读 · 2 评论 -
c++Primer5--如何选择类型
和c语言一样,c++的设计准则之一也是尽可能地接近硬件。C++的算术类型必须满足各种硬件特征,所以它们常常显得繁杂而令人不知所措。事实上,大多数程序员能够(也应该)对数据类型的使用做出限定从而简化选择的过程。以下是选择类型的一些经验准则:当明确知晓数值不可能为负时,选用无符号类型。使用int执行整数运算。在实际应用中,short常常显示太小而 long 一般和 int 有一样的原创 2017-03-07 23:36:49 · 254 阅读 · 0 评论 -
C++Primer笔记--vector 对象 string 对象的下标操作警告
vector 对象以及 string 对象的下标运算符可用于访问已存在的元素,而不能用于添加元素。vector ivec;for(decltype(ivec.size()) ix = 0; ix != 10; ++ix) ivec[ix] = ix;//严重错误:ivec 不包含任何元素 ivec 是一个空 vector,根本不包含任何元素,当然也就不能通过下标去访问任何元素了,正原创 2017-03-22 00:09:05 · 649 阅读 · 0 评论 -
C++Primer笔记--变量和基本类型
符合类型的声明一条定义语句可能定义出不同类型的变量:// i 是一个 int 型的数,p 是一个 int 型指针,r 是一个int 型引用int i = 1024, *p = &i, &r = i;错误观点:在定义语句中,类型修饰符(*或&)作用于本次定义的全部变量。造成这种错误看法的有个原因就是我们可以把空格写在类型修饰符和变量名中间:int* p; //合法,但原创 2017-03-15 00:26:50 · 295 阅读 · 0 评论 -
C++Primer5 笔记--迭代器运算
vector 和 string 迭代器支持的运算iter + niter - n迭代器加上或减去一个整数值仍得到一个迭代器,迭代器指示的新位置与原来相比向前/向后移动了若干个元素。iter1 += n迭代器加法的复合赋值语句,将 iter1 加上 n 的结果赋给 iter1iter1 -= n同加法相同理解iter1 - iter2 两个迭代器原创 2017-03-25 23:05:57 · 987 阅读 · 0 评论 -
C++Primer笔记--数组
字符数组的特殊性可以用字符串字面值来初始化,当使用这种方式时,一定要注意字符串字面值结尾处还有一个空字符‘\0’。在分配内存空间时需要多为空字符预留一个字符空间。数组不允许拷贝和赋值int a[] = {0,1,2};int a2[] = a;//错误a2 = a;//错误有些编译器支持数组的赋值,这就是所谓的编译器扩展(compiler extension)。但一般来说,原创 2017-03-26 23:40:44 · 285 阅读 · 0 评论 -
Qt 中实现 hmac Sha1 加密并以 base64编码输出
#include QString hmacSha1(QByteArray key, QByteArray baseString){ int blockSize = 64; // HMAC-SHA-1 block size, defined in SHA-1 standard if (key.length() > blockSize) { // if key is longer than b转载 2017-06-22 11:00:57 · 3050 阅读 · 1 评论 -
VC中鼠标移动点击操作
实例: CPoint pointOld; GetCursorPos(&pointOld); CRect rect; GetDlgItem(IDCANCEL)->GetWindowRect(&rect); //要获取位置的控件ID //ScreenToClient(rect); //rect.left 就是X坐标,rect.top 就是Y坐标 SetCursorPos( rec原创 2014-12-03 11:38:53 · 3833 阅读 · 0 评论