VC/MFC
文章平均质量分 68
Pafey
这个作者很懒,什么都没留下…
展开
-
在 Visual Studio (VS2015)中搜索时使用正则表达式
在Visual Studio 2015(VS2015)中,使用搜索(通常是查找和替换功能)时,可以启用正则表达式模式来执行更复杂的文本匹配和替换操作。原创 2024-09-25 15:21:23 · 569 阅读 · 0 评论 -
Visual Studio 各版本与年份对应关系
版本号 年份名 VC7.0 VS2002 VC7.1 VS2003 VC8.0 VS2005 VC9.0 VS2008 VC10.0 VS2010 VC11.0 VS2012 VC12.0 VS2013 VC13.0 VS2014 VC14.0 VS2015 VC15.0 VS2017 V...原创 2020-04-30 14:16:58 · 2534 阅读 · 1 评论 -
MFC CListCtrl 点击选中整行
CListCtrl 默认只有点击第一列才能选中,而且只能让第一列高亮,那么如何让点击某一行的任何列,整行都高亮呢?有2个方法,如下: //方法1 ::SendMessage(m_listCtrlDevice.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); //方法2 m原创 2018-01-08 12:02:47 · 5694 阅读 · 1 评论 -
CString 判断存在中文,大小写字母及标点
//Unicode 字符集CString str = _T("068654abc一叶-+=*知秋ABC");CString digit,punctuation,Chinese,capitalLetter,lowercase;for(int i = 0 ; i {int unicode = (int)str.GetAt(i);if (unicode = '0'){d转载 2016-05-16 11:33:41 · 2927 阅读 · 0 评论 -
获取 Windows 系统版本号
项目需要判断window 系统的版本号,兼容啊不兼容~~发现个好文,可以直接搞定,核心就是使用 GetVersionEx 函数,win10 被判断为win8 的问题也有解决方案。。。原文如下http://blog.csdn.net/sunflover454/article/details/51525179原创 2017-07-21 11:33:31 · 491 阅读 · 0 评论 -
使用 OLE 操作 Excel ,在多线程下使用报错问题解决
在 MFC 中,操作 Excel 表格内容还是比较方便的,直接VS 的工作项目添加类即可。大致如下:1 工程属性右键 Add Class -> MFC -> MFC Class From TypeLib -->Add2 在 Available type libraries: 选择电脑上的 Excel 版本库,然后选择如下的几个类添加到右边框,完成即可在项目内生成一个 C原创 2017-04-13 14:57:52 · 2412 阅读 · 0 评论 -
MFC 基于对话框的 OnCommand 用作响应按钮事件
声明和定义先来看看 OnCommand 的声明和定义//声明virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);//定义BOOL CDlgTest::OnCommand(WPARAM wParam, LPARAM lParam){ return CDialog::OnCommand(wParam, lParam);}原创 2017-04-17 15:57:08 · 7857 阅读 · 1 评论 -
CString 获取中文,字母及数字的字节数
有时候因为软件显示区域有限,需要限制用户输入字符长度,而中文和数字英文占的位置并不一样宽。而 CString 的自带函数 GetLength() 是获取字符数,一个中文,一个字母或者一个数字都是占一个字符。如果限制只能输出4个汉字,显然用户输入字母或数字就太短了,所以就要取 CString 所占的字节数,汉字占2个字节,字母和数字占一个。如下:CString text = _T("中国12原创 2017-03-17 10:46:32 · 7205 阅读 · 6 评论 -
VC 确保你要的路径创建成功
在创建本地文件前都要先去检查文件夹路径是否存在,如果不存在则需要去创建它,假设已有路径 D:\work 。1.保存一个文件到 D:\work\test 路径下检查路径代码可以这么写: CString strPathPre = _T("D:\\work\\test") if (!PathIsDirectory(strPathPre)){ CreateDirectory(st原创 2017-03-16 16:12:24 · 506 阅读 · 0 评论 -
【整理】MFC下 各种字符串类型之间转换(MSDN及其他写法)
MSDN帮助文档如何:在各种字符串类型之间进行转换CString转换UniCode 下 CString 转 char* 的方法CString与char *互转总结MFC中Cstring与char *的转换LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR各个字母代表意义原创 2017-03-15 17:12:56 · 976 阅读 · 0 评论 -
CString const char*与char*之间的转换关系
发现一篇好文,原文看得很费眼故而整理一下,原文CString 是个好东西,有很多好用的成员函数,并且动态分配内存空间。但在 MFC 学习初期,容易把 CString 与 const char*,char* 混淆。遇到三种类型数据转换时,总是得过且过。下面就剖析一下三者之间的转换关系与方法。1、CString 与 const char*(LPCTSTR---是在Unicode转载 2017-03-10 16:16:49 · 466 阅读 · 0 评论 -
向某个窗口发送按键消息(包括后台隐藏的窗口)
在一个项目中需要调用第三方的控制台程序进行录音,录音完成需要敲个回车键结束录音.控制台程序是在后台隐藏运行,使用 spy++可找到其窗口名,便可通过 findwindow 找到其句柄hWnd,本以为可使用SendMessage 和 PostMessage 开始发消息了::PostMessage(hWndFFMPEG,WM_KEYDOWN,VK_RETURN,0);//无效::PostMessag...原创 2018-03-09 09:26:07 · 17734 阅读 · 6 评论 -
电脑通过 adb 控制安卓手机(1台或多台)自动加微信
最近做了个需求,从电脑上通过数据线控制手机打电话和自动添加微信好友。查找一番,很快有了方向,那就是通过 adb工具,即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备(也就是手机)交互。好了,知道用什么就好整了,下面简单介绍下过程1.下载adb工具adb 官网下载:http://adbshell.com/u...原创 2018-03-28 16:03:40 · 14752 阅读 · 9 评论 -
项目从vs低版本升级到高版本
如果是单一,无关联的,无引用库文件的话,超级简单, vs 自动帮你搞定,只要选择高版本的 vs 打开原 sln 文件即可如果是大型项目,项目中包含了很多的库文件,这个就头大了,要将库文件先升级到高版本 vs 编译,如果库文件还包含了其他的库文件,那么就要层层递进,先把最里面的库文件给先升级,再依次往外编译.如果碰到第三方的就惨兮兮了… ...原创 2018-04-20 10:18:30 · 4551 阅读 · 0 评论 -
解决 应用程序无法正常启动0xc0150002
解决这个问题:warning LNK4098: defaultlib “MSVCRT” conflicts with use of other libs; use /NODEFAULTLIB:library步骤:1 将 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Micro...原创 2019-04-10 17:30:50 · 6314 阅读 · 2 评论 -
warning C4819的解决办法
从别处拷贝一段代码到程序运行,出现一堆的警告:warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss。这个警告提示反正就是和 Unico...原创 2019-03-29 15:08:40 · 5074 阅读 · 2 评论 -
CHttpFile POST方式提交数据并返回结果
bool PostContent(CString strUrl/*接口地址*/, const CString &strPara/*发送数据*/, CString &strContent/*接口返回数据*/, CString &strDescript/*执行结果描述*/){ try{ strDescript = "提交成功完成!"; ...原创 2018-11-01 16:03:13 · 2477 阅读 · 0 评论 -
mfc CTreeCtrl 树控件排序
使用场景CTreeCtrl 常被用来加载一个公司(具有许多分公司的公司)的组织架构,而公司的部门,最起码是一级部门,往往是需要排序的。类似于Windows资源管理器:库 是根节点Subversion 视频 图片 文档 迅雷下载 音乐 这些是根节点下的一级部门,而图片下面的 我的图片 共用图片 则为一级部门下的二级部门。往往一级部门是需要排序的,好了不废话...原创 2018-06-27 17:50:39 · 1387 阅读 · 0 评论 -
MFC 线程函数里设置 UI 控件数据失效
有时候在线程函数里获取数据,然后直接刷新数据到uiUINT CTestDlg::ThreadDelayLoadAfterLogin( LPVOID lpParam ){ CTestDlg* pThis = (CTestDlg*)lpParam; if (NULL == pThis) return 0; pThis->getApplicationData();/...原创 2018-05-30 10:14:30 · 336 阅读 · 0 评论 -
MFC 上传文件函数 (利用 CHttpFile 上传 )
上传本地文件至服务器指定位置//上传本地文件至服务器指定位置BOOL UploadFile(LPCTSTR strURL, //负责接收上传操作的页面的URL LPCTSTR strLocalFileName) //待上传的本地文件路径{ ASSERT(strURL != NULL && strLocalFileName != NULL);...原创 2018-06-12 16:58:24 · 3916 阅读 · 1 评论 -
MFC 下载网络文件到本地 利用 CHttpFile 和 URLDownloadToFile 【可设超时及进度】两种方式
说明方法1较为简单,通用的多,但在某些环境下可能出现未知错误(也有可能你碰不到,反正我是碰到了)。 方法2实现相对麻烦点,但可设置超时时间以及进度展示,但要实例化一个LPBINDSTATUSCALLBACK 子类,在这个子类中去实现。这个相对好用点,方法1遇到的错误的情况,用方法2却可以正常使用。 LPBINDSTATUSCALLBACK 这个子类代码没有贴出来,放在文未,可点击下载。...原创 2018-06-12 16:47:39 · 4221 阅读 · 0 评论 -
MFC 通过 http (post/get) 访问WEB(接口)服务器,并取得服务器返回数据
关键系统函数CHttpConnection* CInternetSession::GetHttpConnectionCHttpFile* CHttpConnection::OpenRequestCHttpFile::SendRequestCInternetFile::Read访问接口函数//strMethod:类型包含 POST/GET ,strUrl访问的网址,strPos...原创 2018-06-12 16:17:11 · 8929 阅读 · 7 评论 -
VC++ 各个版本(2005 2008 2010 2012 2013 2015 2017 2019 2022)的运行库 VC_redist下载
Microsoft Visual C++ 2005 - 2022 运行库原创 2018-04-27 14:57:01 · 63926 阅读 · 2 评论 -
模拟鼠标移动、点击,双击,键盘输入,鼠标滚轮滚动
在处理界面问题的时候,有时需要模拟鼠标移动或者点击来快速解决问题。比如界面某个区域或者某个按钮没有重画,把鼠标移上去或者点击一下后就正常了,而有时候又一时找不到原因,可以模拟鼠标移动点击来实现你想要的效果。处理过程就是先记住原始鼠标坐标,再移动到你想要的坐标或者点击,之后再移到原始坐标点。代码如下: CPoint pointOld; GetCursorPos(&pointOld);/原创 2017-03-09 10:27:10 · 9094 阅读 · 2 评论 -
记录 【pjsip 中加入G.729 等语音编码】
参考:http://blog.csdn.net/happysheepherder/article/details/4704418http://trac.pjsip.org/repos/wiki/Intel_IPP_Codecs先安装ipp和准备ipp-samples资源链接w_ipp_ia32_p_6.0.2.074.exe百度云下载链接: http://pan.bai原创 2016-06-15 17:33:17 · 4070 阅读 · 0 评论 -
MFC实现多个界面跳转
MFC实现多个界面跳转对于一个应用程序,对话框之间的跳转需要一个类似容器的窗口 新建一个对话框(标注为empty对话框),在里面不加任何东西,调好大小,因为它就是你的应用程序的窗口大小 这时建好所有你要跳转的对话框,通常有个主界面对话框(标注为main对话框),我们要做的就是把main放入到那个empty中,其中有一步很重要,把main的属性(border改为thin或none,style改为c转载 2015-11-19 11:41:14 · 2848 阅读 · 0 评论 -
VC 打开文件
UpdateData(TRUE); CFileDialog fileDlg(TRUE); TCHAR DesktopPath[_MAX_PATH]; SHGetSpecialFolderPath(this->GetSafeHwnd(),MyDir,CSIDL_DESKTOP,0); fileDlg.m_ofn.lpstrInitialDir=DesktopPath; fileDlg.转载 2015-10-14 18:29:36 · 403 阅读 · 0 评论 -
DLL 内部的非模态对话框的 PreTranslateMessage 函数不执行
虽然MFC Regular DLL派生了CWinApp类,并有一个theApp全局对象。但它不包含CWinApp::Run机制,主消息由 exe 负责接收、分发。如果DLL 生成了无模式对话框或有自己的主框架窗口,则它应该导出函数来调用PreTranslateMessage。exe程序需要调用这个导出函数。示例代码如下://DLL端需要导出函数,调用AfxGetApp()->Pre原创 2015-08-19 16:12:06 · 3239 阅读 · 2 评论 -
VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
1.使用CTime类(获取系统当前时间,精确到秒)CString str;//获取系统时间CTime tm;tm=CTime::GetCurrentTime();//获取系统日期str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK);a,从CTimet中提取年月日时分秒 CTime t = CTime::Ge转载 2015-02-09 20:34:41 · 1936 阅读 · 0 评论 -
MFC 字体
CFont::CreateFont:BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut转载 2015-02-04 21:09:49 · 1045 阅读 · 0 评论 -
VS [warning C4996]: 'sprintf': This function or variable may be unsafe. 解决
使用VS2008编译时。会出现以下警告。warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for de转载 2014-12-10 09:08:30 · 1387 阅读 · 0 评论 -
Link warning:LNK4199 解决
在VS2005下编译程序时提示“1>LINK : warning LNK4199: 已忽略 /DELAYLOAD:OleAcc.dll;未找到来自 OleAcc.dll 的导入”,解决办法如下:项目 -- 项目属性 -- 链接器 -- 输入 -- 延迟加载的DLL -- 点开把“从父级或项目默认设置继承”的勾去掉。编译 清净了。http://blog.chinaunix转载 2014-12-10 09:05:14 · 1768 阅读 · 0 评论 -
Unicode下的CString与String之间的相互转换
1. CString to String String strA=(LPCSTR)CStringA(cstrA); 2. String to CString CString cstrA=(CString)strA.c_str();转载 2014-11-08 23:55:23 · 588 阅读 · 0 评论 -
VC 弹出菜单 动态添加二级菜单
CMenu Popupmenu; int nFlag = 1;//判断标志 if (Popupmenu.CreatePopupMenu()==FALSE) return; Popupmenu.AppendMenu(MF_POPUP, (UINT)Popupmenu.m_hMenu, _T("一级菜单1")); CMenu *pSubmenu=Popupmenu.GetSubMe原创 2015-01-29 14:23:58 · 1686 阅读 · 0 评论 -
UniCode 下 CString 转 char* 的方法
今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失。原来CString类对象GetBuffer(),后以后还是unicode编码,所以必须将宽字符转换成char类型那就必须用到一个函数网上查了下解决方法如下:在Visual C++.NET2005中,默认的字符集形式是Unico转载 2014-12-02 14:40:54 · 686 阅读 · 0 评论 -
CString 字串去除非数字
CString COperateDB::RemoveNondigit(CString strSrcText){ CString strDigit =_T(""); for( int i=0;i < strSrcText.GetLength(); i++) { if(strSrcText.GetAt(i)>='0' && strSrcText.原创 2015-12-22 10:50:14 · 2086 阅读 · 0 评论 -
MFC 绘制 PNG 格式图片
//绘制子项图片void CTreeCtrlBT::DrawItemImage(CRect rect, HTREEITEM hItem, CDC *pDc /* = NULL */){ if ( NULL == pDc) { CClientDC dc(this); pDc = &dc; } CImage img; HRESULT ret = img.Load(_T("C:\原创 2016-01-26 09:23:11 · 4126 阅读 · 0 评论 -
QT 下 SQlite3 数据库加密及 CppSQLite3 操作数据库加密
由于最近项目需要考虑本地数据的安全性,避免谁都可以找到数据库文件然后右键-记事本打开。。。所以研究了下SQLite3本地数据库加密的方法,百度之,有两种,一是加密数据后存入数据库,二是整个加密数据库;如果选一改地方实在太多,所以一直找直接加密sqlite数据库的方法;然后各种搜索,整合后可行的方式是使用sqlite预留的加密接口,具体编码是用wxsqlite的加密模块;1.原创 2016-07-15 10:10:25 · 10101 阅读 · 2 评论 -
MFC Combobox 输入内容自动补全并选中缺失部分(类似qq登录输入账号)
客户端是需登录的,登录是需要输入账号的,每次输入重复的东西总会让人厌烦,于是乎需要程序自动补全你想输入的内容。MFC里面通常用来实现登录账号的控件就是Combobox啦。首先你得有保存用户之前的登录记录,这个记录一般保存在数据库中。既然数据有了就只要在用户输入一个账号前面部分字符的时候,使用已输入的字串去数据库里查找与之相匹配的记录,按时间倒序取给用户自己去快速选择。重点就是要处理 Com原创 2017-03-02 17:41:57 · 2082 阅读 · 0 评论 -
MFC CDC 区域绘制文字居中显示
在某些子项的名字长度未知的情况下,使其在某个矩形区域居中显示 超出像素宽度呼,文字字符长度减2并用…结尾 类似下图: ... CDC *pDC = GetDC(); //代码片段 CFont ftText; ftText.CreatePointFont(90,_T("微软雅黑")); CRect rcToolName;//文字原创 2017-02-14 10:36:42 · 3961 阅读 · 0 评论