MFC学习
Strive--顾
一日之计在于晨,一生之计在于勤。
展开
-
MFC——SkinMagic使用详解
SkinMagic使用流程SkinMagic常用函数介绍SkinMagic常见使用问题SkinMagic皮肤原创 2018-07-30 16:43:21 · 1493 阅读 · 0 评论 -
MFC——子线程中(跨线程)更新控件显示内容
一、概述每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率。针对界面来说,还能提高界面的响应能力。一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线程中运行,而所有与主UI线程有关的控件数据刷新应该到主UI线程中处理。也就是数据处理线程发消息,让界面UI去更新控件。在MFC中线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西转载 2018-01-15 10:58:23 · 4405 阅读 · 0 评论 -
MFC——多线程编程详解
一、问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为 IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond()原创 2018-01-11 16:09:35 · 1653 阅读 · 1 评论 -
MFC——CDC画线
1. CDC类的画线函数: 1) CDC的画线函数大致可以分为三类,一类是画直线和曲线,一类是画矩形等多边形,另一类是画圆、椭圆以及弧线等; 2) 使用CDC画线时有个非常重要的概念,就是当前绘图点,是一个客户区中的像素点,很多画线函数默认的起始画线点都是当前绘图点,用户可以通过相关函数设定当前绘图点的位置; 3) 画线函数命名时的后缀“To”,凡是带后缀转载 2018-01-02 12:41:45 · 3010 阅读 · 0 评论 -
MFC——各种RGB颜色的值
各种RGB颜色的值原创 2017-12-08 10:38:21 · 10473 阅读 · 0 评论 -
MFC——Onpaint和OnDraw的区别
OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用 OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw ()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint转载 2017-12-08 09:17:05 · 389 阅读 · 0 评论 -
MFC—— 在按钮上加图标与文字共同显示
先给大家推荐两个ICON,PNG图标库网站:http://sc.chinaz.com/tubiao/RuanJianTuBiao.html(图片多,相当时尚,进去之后你会吃惊,这些就是你想要的) http://www.easyicon.cn/ (特点:图片多!好多!相当多!)要设计一个漂亮的按钮,要么搞成位图按钮,要么加ico图片,但是那样文字就没法显示了,除非把文字先写到图片上。转载 2017-12-12 09:47:33 · 5123 阅读 · 0 评论 -
MFC——基础类及其层次结构
从类CComdTarget层层派生出绝大多数MFC中的类,其层次结构为下图所示.从根类Cobject层层派生出绝大多数MFC中的类,其层次结构为下图所示.MFC中重点类其中,CObject类是MFC提供的绝大多数类的基类。该类完成动态空间的分配与回收,支持一般的诊断、出错信息处理和文档序列化等。 CCmdTarget类主要负责将系统事件(消转载 2017-11-28 09:50:25 · 651 阅读 · 0 评论 -
MFC——ListControl控件的使用
1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”转载 2017-10-25 17:07:06 · 463 阅读 · 0 评论 -
MFC——调用C#生成的DLL文件(动态库)
最近MFC的项目需要将PC端与PLC端进行网口连接,这边也是已经拥有了C#的动态库能使两者进行连接,但是该怎么使用,怎么调用这个C#生成的.DLL文件,却从来没试过。于是在网上找了很多资料,发现都不是很全面,走了不少弯路,最后配置了以下属性之后总算是成功了。(1)打开工程属性——配置属性——常规 将右侧界面中的MFC的使用一栏改为:在共享DLL中使用MFC原创 2017-12-04 16:36:19 · 4433 阅读 · 1 评论 -
MFC——自定义消息响应
1. 定义全局变量或宏#define WM_MyMessage (WM_USER + n) //n为数字到少大于100或者用 const UINT WM_MYMESSAGE = WM_USER + n一般可以加在stdafx.h 或resource.h 或*.app.h中,只要是在全局变量头文件所以都可以.2. 在所在类的*.H文件增加消息函数声明. 这一步跟定义普通转载 2018-01-17 09:58:43 · 742 阅读 · 0 评论 -
MFC——FPT文件操作
一. 连接FTP服务器BOOL flag;CString cstrFtpServer = TEXT("10.142.252.155"); //ftp 服务器地址CString cstrFtpUserName = TEXT("pdmug"); //用户名CString cstrFtpPassword = TEXT("pdmuguser"); //原创 2018-02-07 15:13:44 · 731 阅读 · 0 评论 -
MFC——内存泄露检测
VLD为VC++/VS下的内存泄露检测工具 1、首先下载安装vld,直接下载安装包,安装过程中会直接添加环境变量。 2、在安装目录下有vld.h, vldapi.h, vld.lib, vldmt.lib, vldmtdll.lib, dbghelp.dll等文件,在使用的时候在附加包含附录中添加inlude目录或者将.h文件拷贝到工程默认的include目录下 ,在附加库目录中添加vld安装目录...转载 2018-04-13 19:14:27 · 2335 阅读 · 0 评论 -
MFC——模态对话框与非模态对话框释放资源的小总结
对于模态对话框,其实它是在堆上创建的对象,当函数结束后会自动释放其资源。但对于非模态对话框资源的释放就没这么直接,原因: (1) 它是在堆上创建的。(2) 在当前的使用函数内是不能直接用delete删除的。后经过查资料才了解怎么样处理,对非模式对话框做了些总结如下:A. 如何创建非模式对话框创建函数: Create() and ShowWindow()BOOL CDialog::C...原创 2018-04-10 09:26:28 · 2805 阅读 · 0 评论 -
MFC——添加Gif动画
显示gif动画,这里用到CPictureEx类库,从网上能找到,下面一步一步来实现显示gif动画。1、创建一个对话框,在对话框上添加一个图片控制和一个文控件,效果如下图:2、图中的灰色块就是图片控件,要修改它的属性才会变成灰块,修改了两个属性,如下图:3、选中图片控件,Ctrl + 双击,给它添加成员变量:// CStatic m_gifCtrl;CPictureEx m_gifCtrl;添加的...转载 2018-03-22 09:16:08 · 1891 阅读 · 1 评论 -
VC——双击编辑ListControl中的数据
想要双击实现修改列表框内容,只需四步:第一步:添加一个edit控件找任意位置,并关联一个变量如:m_edit;,在OnInitDialog()函数中写入 m_edit.ShowWindow(SW_HIDE),作用为初始时编辑框隐藏第二步:添加一个CListCtrl控件,关键一个变量如:m_list;然后响应该控件的NM_DBLCLK消息,也就是双击事件处理消息第三部:在双击事件处理函数中写入: ...转载 2018-03-21 11:02:52 · 1293 阅读 · 0 评论 -
MFC——对话框程序添加工具栏按钮图标及其按钮tooltip
在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,很多资源都需要自己手动添加。最近在开发一个程序时,想尝试在对话框程序里面添加 工具栏 及其按钮tooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询!一、首先建立一个对话框程序 1、添加工具栏资源,并在工具栏资源里添加几个按钮,并将按钮的width 和 height 改为24,也可以根据自...转载 2018-03-13 21:07:55 · 10462 阅读 · 3 评论 -
MFC——改变窗口外形
Windows中所有窗口显示默认为矩形,很多时候我们希望窗口的形状可以随意变化。这个时候我们就需要使用MFC的CRgn类,每一个窗口都有一个自己的CRgn,定义了当前窗口的显示区域,CRgn就好像是在一张图片上添加了相框,相框的形状就决定了窗口的显示范围。当然显示区域之外就属于其他窗口。一,多边形窗口[cpp] view plain copy CRect rc; GetWindow...转载 2018-03-05 15:18:26 · 874 阅读 · 0 评论 -
MFC——局域网聊天室(改进)
之前自己用MFC做了个简易的聊天室,但是功能不多,画面布局什么的也感觉不是太好,而且还存在不少BUG,所以最近又重新拾起过去的代码,做了不少的改动并修复了所有的错误,修改后的项目的通信原理还是和之前一样:点击打开链接,所以就不介绍了。登陆:下拉框自动显示已登陆过的MCQ账号,和下面所有界面一样,给按钮添加了背景色,可实现enter快捷键登陆,修复了忘记密码功能中的BUG注册:注...原创 2018-03-04 18:04:50 · 6464 阅读 · 33 评论 -
实现VS2010下的MFC工程在别的电脑上运行
(1) 设置生成的程序为Release(公开的)类型,工程默认的是Debug(调试用)类型的,修改方法:生 成>配置管理器>配置下把Debug改为Release,软后关闭。(2) 第二步把工程MFC使用的库修改为 “在静态库中使用 MFC”,修改方法:解决方案名上右击>属性>配置属性 >常规>MFC 的使用>选择为”在静态库中使用 MFC“,同时还要在C/...原创 2018-02-24 11:48:20 · 2166 阅读 · 1 评论 -
MFC——无边框窗口的拖动
void CXXXXDialog::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); } 要记得添加消息映射,不然这个代码是不起作用的。 转:移动标准窗口是通过...转载 2018-03-07 14:24:57 · 693 阅读 · 0 评论 -
MFC——单文档、多文档和对话框程序的区别
单文档就是一个窗口只能处理一个文档,多文档就是同时可以处理多个,共享工具栏,菜单栏什么的,对话框就是一个提示用户进行选择或者确认的窗体。对话框模板适合于做交互界面,单文档模板适合于做文件处理,多文档模板适合于做多文件处理。不过,还是没法明确这个问题。 对话框模板适合于做交互界面 单文档模板适合于做文件处理 多文档模板适合于做多文件处理(1)基于对话框(3个类):原创 2017-11-16 14:59:50 · 17050 阅读 · 0 评论 -
MFC——SetTimer函数的用法
什么时候我们需要用到SetTimer函数呢?当你需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数了。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。1.1 用WM_TIMER来设置定时器转载 2017-11-21 09:33:15 · 6930 阅读 · 0 评论 -
VC/MFC——如何设置对话框背景颜色
方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 (这个函数已经废弃)1void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0));其中转载 2017-11-07 14:13:03 · 3576 阅读 · 1 评论 -
MFC——句柄的获取
在MFC中创建一个窗口是比较容易的,但是如何将主窗口与子窗口之间的关系和调用掌握住还是不太容易的,下面是找到的一些调用各种关联窗口函数或者变量的方法: HWND hWnd=::FindWindow(NULL,_T("Sphere")); //得到对话框的句柄 C***Dialog* pWnd= (C***Dialog*)C***Dialog::FromHand原创 2017-02-27 23:39:52 · 936 阅读 · 0 评论 -
MFC—— 控件数据交换:DDX
在MFC学习中,知道如何创建控件并对控件进行id和caption的修改后,就需要我们去了解并熟悉如何操纵控件,下面是操作控件的两种方式: (1) 通过调用CWnd::GetDlgItem()函数,根据控件ID获取控件对象指针,操作控件即可,对话框的初始化函数:OnInitDialog() (2)对话框的数据交换技术(DDX) 将控件和一个成员变量绑定,可以通过操原创 2017-03-01 21:35:44 · 1702 阅读 · 0 评论 -
MFC—— 背景添加
方法一:利用Picture控件(1)新建MFC应用程序(2)在应用程序中,选择基于对话框,其他保持默认即可(3)右击项目,选择添加资源(4)在工具箱里找到Picture控件拖到界面中(5)在界面上点击选中Picture控件,然后在属性的Type下拉框中,选择Bitmap(6)再在Picture控件的属性的Type下拉框中插入的图片资源选择好后,图片就可以加载进对话框方法原创 2017-03-05 18:21:42 · 989 阅读 · 0 评论 -
MFC—— static文本 透明
在给控件添加背景以后,为了让整个图片显得更加美观,需要我们将static文本的背景设置为透明,下面是设置透明的方法:/*设置控件背景透明*/HBRUSH CTOOLDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor原创 2017-03-08 22:50:23 · 598 阅读 · 0 评论 -
MFC——Radio Button
先为对话框加上2个radio button,分别是Radio1和Radio2。(1)如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,第一种:((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton转载 2017-04-18 18:14:35 · 268 阅读 · 0 评论 -
MFC学习(一)
之前虽然已经写过几个小项目,但是都有一个不足,就是没有一个好的界面,很希望自己做出来一个不错的界面,所以就最近才写完的ABCBank项目利用mfc制作一个界面,今天看了mfc的一些内容,下面是今天所学的小小的总结:(一)windows API 接口 Windows API 是Windows操作系统预先定义的一些函数,提供给我们应用程序的编程接口(二)消息WinWindo原创 2017-02-22 22:59:21 · 669 阅读 · 0 评论 -
MFC学习(二)
在MFC中,构建一个界面是基础,界面是由许多自己设置的控间组成。在控件的属性中,True为可见,False为不可见;当我们在删除一个控件时,也要删掉与之关联的代码及消息映射,这是为了避免在运行程序后带来不必要的错误;添加控件可以直接拖动鼠标绘制;控件都安放好后,可在菜单里对控件按照横竖排列整齐,更加美观。 今天自己构建了一个简易的计算器的界面,按照上述的步骤,将控原创 2017-02-23 17:13:16 · 355 阅读 · 0 评论 -
AfxBeginThread的介绍/基本用法
AfxBeginThread 用户界面线程和工作者线程都是由AfxBeginThread创建的。现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一个用于工作者线程,分别有如下的原型和过程:用户界面线程的AfxBeginThread 用户界面线程的AfxBeginThread的原型如下:CWinThread* AFXAPI Afx转载 2017-02-27 23:29:55 · 228 阅读 · 0 评论 -
MFC—— Combo Box (组合框)
在MFC中,Combo Box (组合框)控件很方便,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。 1、定义控件对应变量 假定已经创建了一个Dialog,并且从控件工具箱将 Com原创 2017-03-28 18:53:14 · 476 阅读 · 0 评论 -
MFC——文件操作(CFile)
1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。 CString strFileTitle; CFileFind finder; BOOL bWorking = finder.FindFile("C://wi转载 2017-03-03 20:49:17 · 10783 阅读 · 0 评论 -
MFC——Listcontrol 添加背景颜色
在MFC中,我们经常会需要给自己的Listcontrol 添加背景颜色,下面便是如何添加的详细过程。首先需要你的程序有一个ListCtrl在对话框上,并且这个ListCtrl处于Report和多列模式。 Custom draw可以被想象成一个轻量级的,容易使用的重绘方法(重绘方法还有几种,例如Owner Draw等)。这种容易来自于我们只需要处理一个消息(NM_CUSTOMDR原创 2017-05-02 16:35:45 · 10104 阅读 · 3 评论 -
MFC—— 窗口句柄获取
创建窗口控件后,我们可能会在不同的窗口中需要操作其他窗口中的内容(即可向该窗口类类发送消息、处理程序),因而就需要一个句柄来控制对应的窗口,下面是获得不同句柄的方法:获取所在类窗口的句柄:this->m_hwnd1。主窗口的句柄:无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:AfxGetMainWnd()->m_hWnd,如:::SendMessage(A原创 2017-03-04 17:05:25 · 3561 阅读 · 0 评论 -
MFC——VS2010串口通信的编写教程
https://wenku.baidu.com/view/081e81ed8762caaedc33d404.html原创 2017-10-31 11:20:13 · 1742 阅读 · 0 评论 -
MFC——VS中MSComm串口控件的导入和注意事项
(1)先下载一个文件,链接为:点击打开链接。压缩包中包含四个文件:MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx;解压后拷贝到: C:\Windows\System32(WIN7系统); C:\WINDOWS\system32(XP系统)。 注意:64位win7系统还需要将mscomm32.ocx文件复制到C:\Windows\SysW...原创 2017-10-24 15:34:44 · 4133 阅读 · 1 评论 -
MFC——设置控件文本字体、大小、颜色、背景
先以静态文本为例,介绍下怎么修改文本字体、大小、颜色、背景等参数。其他文本、控件等可参照修改。1.修改字体、大小 这个很简单,首先在Dlg类中声明一个CFont类型的成员变量: CFont m_editFont ; 然后在类的初始化函数OnInitDialog()中添加以下两行代码: //设置静态文本字体大小 m_editFont.Creat原创 2017-11-01 16:48:59 · 2107 阅读 · 0 评论 -
MFC——CString.Format的详细用法
在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。 先看看Format用于转换的格式字符: %c转载 2017-10-25 08:34:18 · 1627 阅读 · 0 评论