MFC
蚂蚁取经
学无止境
展开
-
MFC自定义消息的实现方法----(线程向主对话框发送消息)、MFC不能用UpdateData的解决方法
在MFC中,我们一边在使用多线程时,经常会遇到在需要调用到新建的控件,此时建议不要在新建的线程中直接调用主对话框的控件,我们可以通过自定义消息,在新建线程中发送并触发主线程进行相关的界面控件操作。其中,GetSafeHwnd()得到了一个当前窗口的句柄,此消息将发送给当前窗口,如果想发送消息给其他窗口只需改变这个句柄,前提示目的的窗口也实现了此消息的处理函数。3. 在窗口或对话框的cpp文件的BEGIN_MESSAGE_MAP,END_MESSAGE_MAP中增加一行。原创 2023-09-10 11:19:09 · 618 阅读 · 0 评论 -
CSocket 使用静态MFC 错误
void* CMapPtrToPtr::GetValueAt(void* key) const 在 CSocket 被 Create 之前调用 AfxSocketInit 函数, 例如 WSADATA wsaData; AfxSocketInit(&wsaData); m_sock.Create()...原创 2020-09-15 10:19:52 · 219 阅读 · 1 评论 -
VS编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll versio
错误在使用VS编译文件时出现了如下错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]在网上查了查,解决方案大都忽略了一些细节,所以很可能并不能解决问题,这里补全了一些细节。解决方案1.先选择“解决方案管理器”,然后按如下路径:项目-》属性-》C/C++-》代原创 2020-09-14 15:22:03 · 7131 阅读 · 0 评论 -
在socket 中使用域名
客户端中直接使用IP地址会有很大的弊端,一旦IP地址变化(IP地址会经常变动),客户端软件就会出现错误。而使用域名会方便很多,注册后的域名只要每年续费就永远属于自己的,更换IP地址时修改域名解析即可,不会影响软件的正常使用。关于域名注册、域名解析、host 文件、DNS 服务器等自行学习。重点讲解如何使用域名。通过域名获取IP地址域名仅仅是IP地址的一个助记符,目的是方便记忆,通过域名并不能找到目标计算机,通信之前必须要将域名转换成IP地址。gethostbyname() 函数可以完成这原创 2020-09-12 14:37:58 · 4007 阅读 · 0 评论 -
MFC 打来COM10及以上的串口
Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可用于打开串口,获得串口句柄。使用CreateFile()函数打开串口时文件共享模式应设置为0(表示独占),创建参数设置为OPEN_EXISTING,模板必须设置为NULL。如果为COM1至COM9,可使用“COM1”-“COM9”作为文件名传递给CreateFile()函数,函数可成功返回。但是,如果操作对象为COM10及以上的端口,以此方式命名文件名调用CreateFile()函数会返回INVALID_HAN原创 2020-06-12 21:30:22 · 927 阅读 · 0 评论 -
WideCharToMultiByte
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串。 (---Unicode转ANSI(GB2312)) 函数原型:int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPWSTR lpWideCharStr, int cchWideChar, LPCSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefa.转载 2020-05-18 15:41:11 · 7366 阅读 · 0 评论 -
ASCII码表
1、ASCII 打印字符:数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。注:十进制32代表空格 ,十进制数字 127 代表 DELETE 命令。下面是ASCII码和相应数字的对照表:2、ASCII 非打印控制字符:ASCII 表上的数字 0–31 分配给了控制字符,用于控制像打印机等一些外围设备。例如,12 代表换页/新页功能。此命令指示打印机跳到下一页的开头。3、扩展 ASCII 打印字符:扩展的 ASCII 字符满足了对更多字符的需求。...原创 2020-05-10 13:13:16 · 425 阅读 · 0 评论 -
MFC 打开文件夹
ShellExecute(NULL,_T("open"),m_strFolderPath,NULL,NULL,SW_SHOWNORMAL);原创 2020-05-08 15:14:55 · 1334 阅读 · 0 评论 -
MFC新建Access数据库和表
1. 准备工作(1) 把下面两局代码写进stdafx.h里。位置是倒数第二行,或者#include <afxdisp.h> // MFC 自动化类 这句的后面。(别的位置没试过) (如果改变了位置,要先清理解决方案,再重新生成解决方案)#import "c:\program files\common files\system\ado\msado15.dll" no_names...原创 2020-03-12 15:33:43 · 1243 阅读 · 0 评论 -
判断文件CFile是否被打开
方法一:CFile类的成员变量:m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile与CFile::hFileNull的比较来判断该文件是否已经打开。示例代码: 1 CString strFilename = _T("D:\\大学语文.docx"); 2 CFile file; 3 file.Open(strFilename,C...原创 2020-02-27 14:12:06 · 2030 阅读 · 0 评论 -
CArrary SetSize及数组一些使用发现
CArray 使用不当会产生内存碎片,应先调用SetSize(),但具体怎么用还不是太清楚,先看代码:运行结果:1, 0x2bcf58, 0x2bcf98, 22, 0x2b9e78, 0x2b9e78, 23, 0x2b9ec0, 0x2b9ec0, 80从以上结果看出,第一种方法未用SetSize是错的,执行arr1.Add( 2 )时会重新给第一项分配内存,内存...原创 2020-02-25 15:50:30 · 559 阅读 · 0 评论 -
自动搜算串口
https://blog.csdn.net/sinat_35728816/article/details/81632310 参考Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。本程序串口类中打开串口的函数定义如下:bool My_Com::Open_Com(LPCTSTR Port...转载 2019-11-11 13:54:36 · 172 阅读 · 0 评论 -
COM口发现
1.可以在下位机发送数据的同时打开COM口。只不过接收数据的线程所有数据变量必须在opencom函数前初始化完成。oninit函数没有彻底执行完之前,构造函数系统自动初始化的不算数...原创 2019-11-09 16:12:00 · 323 阅读 · 0 评论 -
MFC 随窗口变化
刚接触MFC不久,对MFC的许多函数和功能还不是很了解。所以,在仿照书本开发一个仿QQ的通讯程序的时候,就碰到了一个怎么样使控件随着窗体变化的问题。好了,废话不多说,直接上主窗体图:现在,要实现的功能如下:使控件CLISTBOX类对象窗口(IDC_QQLISTBOX)以及两个CBUTTON类对象(IDC_MAIL)、(IDC_WEB)随着主窗体的变化而自动变化。具体转载 2016-11-09 13:47:19 · 453 阅读 · 0 评论 -
自制button
SkinButton.h[cpp] view plain copy#ifndef SKINBUTTON_HEAD #define SKINBUTTON_HEAD #pragma once //#include "stdafx.h" #include #include #include #include转载 2016-11-09 14:20:45 · 583 阅读 · 0 评论 -
Cstring.Format
在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。 先看看Format用于转换的格式字符: %c转载 2016-11-09 14:12:29 · 2619 阅读 · 0 评论 -
MFC COMBOX 使用
一、初始化Combo Box控件(1)在资源视图中,选择控件的"Properties",然后在Data选项卡里为控件添加初始化数据,换行是按Ctrl+Enter,然后,再修改Style选项卡里的Type属性为Drop List。(2)在程序初始化时动态添加CString strTemp;((CComboBox*)GetDlgItem(IDC_COMBO_CF))->Re转载 2016-11-10 17:10:53 · 1079 阅读 · 0 评论 -
手动获取ADO连接字符串
自己如何获取ADO连接字符串 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库。今天详细介绍下这个很流行的如何获取ADO字符串的方法,就能很容易直观看到这个连接字符串是否真能连接上数据库。编写了相应的软件ADO助手,详见《如何使用ADO助手生成数据库代码》。 1. 新建一个文本文件“ado.txt”,重命名为“ado.udl” 注转载 2016-11-11 10:05:29 · 331 阅读 · 0 评论 -
ADO数据库
1.工程头文件“stdafx.h”末尾加入以下语句 #import"C:\ProgramFiles\CommonFiles\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")1该语句引入支持ADO的组件类型库(*.tlb):2.初始化组件,可在主程式的OnInitDialog函数中加入以下代码:原创 2016-11-10 10:38:52 · 442 阅读 · 0 评论 -
MFC RadioButton用法详解
MFC RadioButton用法详解 (2013-11-13 11:54:14)转载▼ 分类: MFC基础介绍:radio button通常都是成组使用的,在一组里面是互斥的。分组的原则是:1、首先将RadioButton控件定好Tab顺序,具体方法:工具栏“格式”—>“Tab键顺序”选项选中,转载 2016-11-29 15:24:17 · 8434 阅读 · 0 评论 -
mfc listbox 应用
ListBox的操作比较简单:1添加数据声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content.m_ListBox_Content.AddString(_T("123"));m_ListBox_Content.AddString(_T("汉字"));m_ListBox_Content.AddString(_T("E原创 2016-11-17 15:18:31 · 268 阅读 · 0 评论 -
creatfont
BOOL CreateFont( int nHeight, //字体的高度 int nWidth, //字体的宽度 int nEscapement, //字体显示的角度 int nOrientation, //字体的角度 int nWeight, //字体的磅数 BYTE bItalic, //斜体字体 BYTE bUnderline, //带下划线的字体原创 2016-11-17 11:29:08 · 555 阅读 · 1 评论 -
mfc程序长时间运行后报错:a required resource was unavailable
原因是设置背景色时用到了GDI资源,程序刚开始运行的时候没问题,但随着时间的蔓延,GDI资源耗尽,则报错:a required resource was unavailable。GDI资源使用数量可在任务管理器中查看。也就是说GDI资源泄漏的问题。接着找到用到GDI资源的地方,主要代码如下(在OnPaint()中): if(nCtlColor == CTLCOLOR原创 2016-11-17 16:06:40 · 2122 阅读 · 0 评论 -
Groupbox标题大小颜色设置
修改Groupbox的标题颜色首先在OnCtlColor添加下面if (IDC_GROUP_XXX == pWnd->GetDlgCtrlID()){ pDc->SetTextColor(RGB(255, 255, 255));//字体白色 hbr = CreatSolidBrush(RGB(0, 0, 0));//背景颜色}1234512345然后,#Includ原创 2016-11-17 17:01:06 · 12900 阅读 · 2 评论 -
WM_DRAWITEM 与 DrawItem 关系
我在学习中经常遇到要重写DrawItem()的情况,但又有一个WM_DRAWITEM消息,它们是什么样的关系呢。如果我们要重写一个CButton取名为CMyButton,我们可以重写CMyButton的DrawItem()函数来实现我们的需求,但CMyButton::DrawItem()是在什么时候调用呢?它是在它的宿主类的OnDrawItem()中被调用,OnDrawIt转载 2016-11-18 10:45:02 · 406 阅读 · 0 评论 -
CDC 类详解
CDC CObject └CDCCDC类定义的是设备上下文对象的类。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。它还为获取和原创 2016-11-18 11:26:46 · 625 阅读 · 0 评论 -
设置焦点注意
文章来源:http://hi.baidu.com/iaskall/item/e4486fd312ec304eddf9be4a我们常常会有这样的需求,想在窗口打开的时候就将焦点(光标)设置到某个指定的控件上去。我们都知道设置焦点需要用到setFocus这个方法(几乎任何编程环境都这样VC,C#,VB,VF都这样)。但在VC中我们使用了GetDlgItem(IDC_XX)->S转载 2016-11-15 14:13:15 · 676 阅读 · 0 评论 -
判断按钮的点击和抬起
在父窗口的PretranslateMessage中拦截WM_LBUTTONDOWN和WM_LBUTTONUP进行处理:C/C++ code?12345678910111213141516171819原创 2016-11-15 17:01:36 · 1295 阅读 · 0 评论 -
msflexgrid在vs2010中的使用
VC6.0 是 工程-添加工程-componts and controls-Register Activex Controlsvc2010 如果只在工具箱里面添加msflexgrid控件,再添加变量,生成的CMSFLEXGRID类没有方法和属性!要先从添加类-添加ACTIVEX的MFC类,才可以,而且生成的CMSFLEXGRID里面的方法跟VC6.0生成的名字有点不同,比如VC6.0的原创 2016-12-03 09:43:54 · 3760 阅读 · 0 评论 -
list control
mfc控件——list control的使用 【前话】 编译原理的第一个实验——词法分析器验收时,老师要求最后的结果用GUI的形式表现出来。想想确实,黑白的控制台应用程序界面在用户操作时的确不如GUI 友好。GUI界面也算是大势所趋。我现在掌握三种语言的基本语法——c/c++、Java和python。python好久之前学过然后没用就忘记了,最近想写网络爬虫才转载 2016-12-03 13:59:30 · 991 阅读 · 0 评论 -
MFC messagebox
一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。 Text:欲显示的信息字符串。 Caption:对话框标题字符串。转载 2016-11-22 11:10:25 · 277 阅读 · 0 评论 -
MFC CDC绘制直线 折现 椭圆 ...
****Dlg.h头文件添加:?12345678910111213//为工程添加画笔、点变量数组public: CPen m_pen[5]; CPoint m_point[5];pub原创 2016-11-22 11:52:02 · 3482 阅读 · 0 评论 -
mfc 修改 edit 颜色 大小
1.改变字体大小:方法一:步骤一:在Dlg类中增加一个类成员变量: CFont m_editFont;注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。步骤二:在OnInitDialog方法中增加下列语句:m_editFont.CreatePointFont(180, "宋体");m_转载 2016-11-14 16:06:02 · 2765 阅读 · 0 评论 -
buttonST 按钮类
VC++ MFC 按钮的全部样式Style转载地址:http://www.cnblogs.com/lujin49/p/4691107.html Button Style BS_3STATE 与复选框一样本样式按钮可被单击变暗。变暗状态通常用于指示本样式的按键正处于禁用状态。 BS_AUTO3STATE 与三状态的复选框一样当用户选中它本按钮样式状态外观会改变。 BS_AUT转载 2016-11-21 14:29:28 · 2529 阅读 · 0 评论 -
在ctlcolor中修改groupbox背景色
修改背景色,在网上查了好多方法都不行,大都只能修改title的颜色。问题解决了,在此总结一下。主要是通过填充颜色的方法来完成的。在ctlcolor中,if(pWnd->GetDlgCtrlID()==ID),首先定义一个rect来获取groupbox的区域坐标,再用setbkcolor设置背景色,利用fillsolidrect来完成对groupbox区域的填充,最后不要忘了返回画刷hbr=Crea原创 2016-11-23 11:13:49 · 1571 阅读 · 0 评论 -
Tab Control 用法
1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变原创 2016-12-08 13:23:02 · 344 阅读 · 0 评论 -
tabcontrol 自绘
//头文件[cpp] view plain copy#pragma once // OwnerdrawTabCtrl.h : header file ///////////////////////////////////////////////////////////////////////////// // COw转载 2016-12-09 09:46:35 · 2913 阅读 · 0 评论 -
Vc 三种串口通讯方式
本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控。在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。依据不同的条件实现对串口的灵活编程控制是我们所需要的。在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采转载 2016-12-16 15:21:04 · 4897 阅读 · 0 评论 -
串口设置
1.首先,在VS2010环境下创建基于对话框的MFC应用程序。a.选择菜单项 文件—>新建—>项目,弹出新建项目对话框。b.左侧面板中选择Visual C++下的MFC,中间窗口中选择MFC应用程序,然后在下面的名称编辑框中键入工程名称,本例取名SerialTest,在位置编辑框中设置工程的保存路径。点击确定。c.在弹出的MFC应用程序向导中,点下一步到应用程序类型转载 2016-12-13 16:55:45 · 3793 阅读 · 0 评论 -
MFC数组类CArray的使用
MFC数组类CArray的使用的操作详解[转] MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型。常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。 MFC定义了数组模板类CArray,并转载 2016-12-15 11:48:47 · 3470 阅读 · 0 评论