
MFC
文章平均质量分 54
金色熊族
这个作者很懒,什么都没留下…
展开
-
如何启动和终止线程的思考
QT提供了QThread类来实现多线程编程。QThread::terminate()用来结束子线程。假如调用terminate()后,子线程不是立刻停止,程序员还可以调用QThread::wait()等待子线程结束,才进行后面的操作。在以前的项目里,我经常使用terminate + wait的组合来结束线程。但是前几天发现,这样的组合并非总能成功:子线程有时不能及时结束,造成主线程也卡在wait(...原创 2019-03-01 22:01:05 · 541 阅读 · 0 评论 -
MFC下利用setsockopt设置超时
tcp的recv函数默认是阻塞的,就是说,假如程序运行到了recv函数处,但是tcp没有收到数据,则程序会卡在recv这里,直到收到数据为止。一、看下面的例子:// tcp_setsockopt.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <W...原创 2019-01-27 22:26:09 · 2057 阅读 · 0 评论 -
MFC CView 显示灰度图示例
本文受了https://blog.csdn.net/dennisfdu/article/details/8702471 的启发实现灰度贴图,强调3个点:1) CView定时刷新其显示,这在OnTimer里实现:::SetStretchBltMode(m_dcMem.GetSafeHdc(), COLORONCOLOR); StretchDIBits(m_dcMem.GetSafe...原创 2018-11-25 21:38:05 · 1095 阅读 · 0 评论 -
MFC获取exe文件所在的文件夹
本示例展示的是利用函数cstrGetExePath(),返回当前的exe程序所在的文件夹路径。即使路径里有中文名也适用。本示例受了 https://blog.csdn.net/jaken99/article/details/78231872的启发代码:// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"...原创 2018-11-18 13:19:18 · 756 阅读 · 0 评论 -
如何动/静 态 两种方式修改Static控件的颜色
转自https://www.cnblogs.com/52yixin/articles/2271278.html首先,我觉得VC很坑爹!在C#等那些中,要修改比如一个Label或者一个按钮的颜色...那简直就是小学生都会做的事情...可是到VC++里面,你说你想修改Label的颜色。。甚至你说你要修改按钮的。。。痛苦啊~!!!有木有!!! 可是没办法,还是得搞,继续吧。。。 方法...转载 2018-11-06 20:02:37 · 645 阅读 · 0 评论 -
MFC写入xls文件示例
本文受了https://blog.csdn.net/weileshenghuo1/article/details/39554037以及http://club.excelhome.net/thread-937818-1-1.html的启发。1)计算机上要 安装office 20072) 利用 VS2008建立MFC工程,基于对话框的3) project->add class->...原创 2018-09-05 07:28:34 · 2701 阅读 · 0 评论 -
MFC精确定时器
上一篇博客介绍了如何利用QueryPerformanceCounter()来精确计时。我们 在上一篇博客里看到了,Qt的QTimer类是不能非常精确的定时的。本例介绍一种MFC自己提供的定时器函数timeSetEvent,实现毫秒量级的定时触发。h文件:#ifndef QTPRECISETIMER_H#define QTPRECISETIMER_H#include <QtWi...原创 2018-09-01 09:57:14 · 3463 阅读 · 0 评论 -
MFC确认文件夹是否存在,以及创建文件夹
来源 :http://blog.csdn.net/chidy/article/details/8623511bool PathIsDirectory(CString cstrPath) 检测路径是否存在.cstrPath是文件夹的路径,如"D:\\hello"或者"D:\\hello\\",有没有最后的"\\"对结果无影响。CreateDirectioy(CString cstrPath, 0)...转载 2018-02-18 23:11:13 · 735 阅读 · 0 评论 -
MFC添加鼠标右键菜单
1)创建MFC项目;2)在资源视图中,右键点击"XXX.rc"目录,选择弹出菜单的“添加资源”选项,在弹出的对话框中选择添加menu;3)在资源界面中输入菜单的各个指令项的文字内容,并且设置对应的ID号;4)在对话框的类视图中,选择“属性”-“消息”,重写对消息WM_CONTEXTMENU的响应函数。5)函数体内填写代码如下:void CtestMenuDlg::OnContextMenu(CWn...原创 2018-02-16 11:22:10 · 11859 阅读 · 2 评论 -
对比:使用cmd命令删除文件夹下所有文件 / 使用DeleteFile函数
先说结论:使用命令行的rmdir总是可以把文件/文件夹清除,但是MFC自己的 DeleteFile函数有时出现删除失灵的情况(qt的QDir::removeRecursively()也有类似问题)。1) 使用cmd命令删除文件夹 出处:https://www.cnblogs.com/jiangyi666/p/6638815.htmlrmdir 删除整个目录好比说我要删除 222 这个...原创 2018-01-25 21:07:20 · 28951 阅读 · 1 评论 -
利用MFC截取对话框图像或者截取全屏图像
可能用到的库:#include #include 在下面的程序里,我构造一个CDialog对话框,点击它的OK按钮之后,程序进行截取保存工作。全屏图像保存到test2.bmp文件里。而对话框图像保存在test.bmp中(注释掉的部分)。代码:void CScreenShotDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 /原创 2017-04-13 22:10:37 · 3776 阅读 · 3 评论 -
MFC下获取文件夹路径 的办法
参考了网站:http://www.cnblogs.com/lovelyx/p/4867134.htmlbool bGetFolderPath(char * pFolderPath, int iLen){ BROWSEINFO bi; LPITEMIDLIST pidl; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = NULL原创 2017-01-23 03:30:14 · 2520 阅读 · 0 评论 -
在vs2012中使用libusb-1.0库
sourceforge里面有个libusb-win32。但是在它的页面https://sourceforge.net/p/libusb-win32/wiki/Home/上明确说明了建议以后的新项目不要再用libusb-win32,而是建议采用libusb-1.0。libusb-1.0不仅提供32位的库,也提供64位的库,功能比libusb-win32更强,而且其语法基本也沿用了libusb-win原创 2016-09-15 19:42:54 · 7897 阅读 · 4 评论 -
VS2012下利用Opengl在Cview中绘制
《VS 2012环境下使用MFC进行OpenGL编程》给出了很好的范例,并且免费提供代码。这里只做一点补充说明:文中提到的glaux.h和glaux,lib需要额外下载。事实上,这个库不是必须的,只要把"stdafx.h"中的 #include 换成 #include 和#include ,并且把附加依赖项中的glaux.lib去掉即可:原创 2016-09-09 22:16:18 · 804 阅读 · 0 评论 -
内存-文件映射应注意的问题
建立内存-文件映射分3步走。1)利用CreateFile()函数打开文件。这个函数的第一个输入参数是字符串,对应要打开的文件名。第二个参数标记文件的 读写权限。假如这个文件被打开了以后,程序又调用了一次CreateFile(),即是说,为同一个文件建立第二个手柄,那么第三个参数表示的意思就是第二个手柄允许具备何种权限。详情请见http://blog.csdn.net/hongjiqin/art原创 2016-04-24 16:22:45 · 3272 阅读 · 0 评论 -
对 GetCursorPos()的 说明
GetCursor()的 用法 通常是 CPoint cp;GetCursorPos(&cp);它获取的是 鼠标相对屏幕的左上角的距离,单位是像素。而对于一个窗口来说,它的消息响应函数的输入参数通常是相对于客户区左上角的距离。比如说OnLButtonUp(UINT nFlags, CPoint point)的 point参数,就是相对于客户区的左上角而言的。想要把从Get原创 2016-01-17 16:56:16 · 8430 阅读 · 0 评论 -
从CEdit派生一个新类,只接受阿拉伯数字、小数点和退格键的 方法
1)在“类视图”中,右键点击第一行(即项目名称那一行),选择“添加···”,选择添加类2)在类向导中选择基类为 CEdit,并给自己的新类命名3)确定后,新类的名字出现在“类视图”空间里面。同时,新类的头文件和cpp文件也被创建4)左键点击 类视图 里面新类的条目,然后在它的“属性”栏里面选择消息,找到 WM_CHAR,给它添加OnChar()函数5)给这个函数添加如下内容:v原创 2015-12-17 22:21:41 · 856 阅读 · 0 评论 -
自己对PretranslateMessage的一点理解
给一个CDialog添加 WM_CHAR -- OnChar 的响应:void Clearn_WMCHARDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){ // TODO: 在此添加消息处理程序代码和/或调用默认值 if(::isdigit(nChar) || '.' == nChar) { } else { retu原创 2015-12-17 21:37:21 · 1523 阅读 · 0 评论