MFC
爬行的菜鸟
学习才是正确的道路
展开
-
VS注释模板
/* ============================================================ 函数名称 : CheckNodeName 功能描述 : 获取对象名称的对象类型 返回值 : 对象的ID 参数 : strClassName 对象的名称 用法 : ============================================================*/...原创 2021-10-26 11:29:11 · 467 阅读 · 0 评论 -
动态加载dll的问题(同一个进程使用dll的解决办法)
今天项目需要进行同一个dll的多线程同时操作。 解决办法 :通过动态加载的办法 将dll复制重命名 即 线程A-----复制test.dll并重命名为test_A.dll--动态加载test_A.dll 线程B-----复制test.dll并重命名为test_B.dll--动态加载test_B.dll//现在dll中的函数为DWORD WINAPI SUP300_Open(_Out_ HANDLE* hHandle, _In_ int ControlT...原创 2020-08-04 17:17:13 · 1351 阅读 · 0 评论 -
勾选框判断是否勾选(MFC)
bool XXXXX::Get_MSRead_Check(SUP2000_Reader * pDlg){ if (BST_CHECKED == pDlg->IsDlgButtonChecked(IDC_CHECK_MSREAD)) { return TRUE; } else { return FALSE;; }}原创 2020-07-15 13:44:37 · 968 阅读 · 0 评论 -
MFC中实现多颜色信息文本显示功能
最近在使用MFC做测试工具 这里记录一下 使用这个控件的方法第一步 添加此控件第二步:在初始化阶段加载此控件AfxInitRichEdit();AfxInitRichEdit2();第三步:函数声明#define WM_UPDATE_STATIC (WM_USER + 10001) afx_msg LRESULT OnUpdateStatic(WPARAM wParam, LPARAM lParam); void Show_Mage(CString str...原创 2020-07-13 14:53:52 · 1072 阅读 · 2 评论 -
抓头,0xc00005错误看到一个比较多的解释 记录一下
说明文字:PAGE-FAULT-IN-NONPAGED-AREA 通常的原因:内存错误(数据不能使用分页文件交换到磁盘中). 解决方法:卸掉所有的新近安装的硬件. 运行由计算机制造商提供的所有系统诊断软件.尤其是内存检查. 检查是否正确安装了所有新硬件或软件,如果这是一次全新安装,请与硬件或软件制造商联系,获得可能需要的任何Windows更新或驱动程序. 禁用或卸载所有的反病毒程序. 禁用BIOS内存选项,例如cache或shadow. 应用程序初始化内存分配错误。 0xc0000005...原创 2020-07-01 16:39:30 · 2270 阅读 · 0 评论 -
等待线程结束的一种方式 自己记录一下
HANDLE m_hThread_loopMS; int Reader_Flag = 1; //按钮flag/****************************************************************************///创建线程 CString strOut = L""; switch (Reader_Flag) { case 1: //判断线程是否关闭 void mThread_close_falg(); m..原创 2020-06-29 10:26:12 · 284 阅读 · 0 评论 -
(Change Ascii code to Hex code ) and (Change to Ascii value)
Change Ascii code to Hex codeMake_Ascii2Hex(_In_ CONST TCHAR *pData, _In_ unsigned int nLen, _Out_ BYTE *pOutputData, _Out_ DWORD *pRspSize){ WORD i = 0, j = 0, k = 0, ret = 0; WORD hex_data1 = ...原创 2020-01-03 10:15:59 · 263 阅读 · 0 评论 -
Change Hex code to Ascii code
Make_Hex2Ascii(_In_ CONST BYTE *pData, _In_ unsigned int nLen, _Out_ TCHAR *pOutputData){ WORD i = 0; TRY { for (i = 0; i < nLen; i++) { //wsprintf((TCHAR *)(pOutputData + (i * 2)),...原创 2020-01-03 10:12:46 · 264 阅读 · 0 评论 -
VC++实现CallBack
一、函数指针那么什么是函数指针呢?说白了就是指向函数的指针,它是一个变量。通常,函数会被编译为一段二进制机器码。每个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。可以把函数的这个首地址(入口地址)赋予一个指针变量,使该指针变量指向该函数。那么就可以通过该指针变量就可以找到并且调用这个函数了。int (*p)();//声明一个指向返回值是整型的函数指针...转载 2019-10-18 15:33:21 · 452 阅读 · 0 评论 -
MFC基本对话框_串口(COM)扫描函数总结
本文主要总结一个串口(COM口)扫描函数,并将其封装成一个函数。当需要用MFC做一个计算机的串口扫描按钮时,可以直接调用下列函数,而不用再另费心思去写。全文主要分为三部分,第一部分是头文件源代码,第二部分是源文件源代码,第三部分是COM口函数调用示例。一、头文件程序如下(可直接复制黏贴)CommScan.h#pragma onceint CommScan(CComboBox* ...转载 2019-10-15 11:29:12 · 557 阅读 · 0 评论 -
MFC 文件操作
VC:文件操作大全,打开,保存,复制,删除,查找等各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效的代码。本文对Visual C++中有关文件操作进行了全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行了详细分析。1. 文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行...转载 2019-03-05 08:54:55 · 2021 阅读 · 0 评论 -
MFC文件操作
文件的操作分为两步,打开和读写。 打开和读写对应着两个类,分别 CFileDialog 和 CFile.第一步 打开文件对话框操作:(1) 文件对话框类 CFileDialog (2) 构造方法 CFileDialog::CFileDialog(); CFileDialog::CFileDialog(BOOLbOpenFileDialog...转载 2019-03-05 08:25:29 · 618 阅读 · 0 评论 -
MFC CString 和int相互转化
CString str = _T("123");int i = _ttoi(str);===============int i = 123;CString str ;str.Format(_T("%d"), i);转载 2019-02-27 15:49:47 · 3011 阅读 · 0 评论 -
最详细易懂的CRC-16校验原理(附源程序)
from:http://www.openhw.org/chudonganjin/blog/12-08/230184_515e6.html最详细易懂的CRC-16校验原理(附源程序)1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为...转载 2019-03-05 16:22:17 · 2516 阅读 · 0 评论 -
MFC由CView转化为CScrollView
由于我们编程时,会时常用到滚动条,所以会用到CScrollView类,但开始创建工程时没有考虑这么多。下面就继承CView类改为继承CScollView类说一下具体过程:1.找到要改的类,将H和CPP文件里的CView改为CScollView。直接用菜单下的replace2.添加虚函数(查看一下你的视类有没有)OnInitialUpdate;添加形如以下代码 :void CMimicsV...转载 2019-01-10 11:22:44 · 498 阅读 · 0 评论 -
Windows编程入门-设备环境属性
Windows在设备环境中存储着一些“属性”,这些属性控制GDI函数在显示器上的操作方式。例如,使用TextOut函数显示一些文本时,不必指定文本的颜色或者文本的字体。Windows使用设备环境来获取这些信息。当一个程序获取一个设备环境句柄时,Windows设置所有的属性为默认值。下表显示了Windows98支持的很多设备环境属性、其默认值和改变或获取其值得函数。 设备环境属性 默认...转载 2019-01-15 13:14:14 · 478 阅读 · 0 评论 -
理解SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
CDC::SetMapMode virtual int SetMapMode( int nMapMode );函数功能描述:该函数设置指定设备环境的映射方式,映射方式定义了将逻辑单位转换为设备单位的度量单位,并定义了设备的X、Y轴的方向。nMapMode:指定新的映射方式,此参数可以是下面列出的任何一个值。 MM_ANISOTROPIC:逻辑单位转换成具有任意比例轴的任意单位,用...转载 2019-01-15 11:08:36 · 1806 阅读 · 0 评论 -
理解映射方式、设备坐标系、逻辑坐标系、设置逻辑坐标原点与设备坐标原点
在VC下进行GDI编程,理解映射方式、设备坐标系、逻辑坐标系、设置逻辑坐标原点和设备坐标原点,真的把我折磨的够厉害的,花了很多时间,终于弄明白一些了,在此记录下,以便以后温习。 一、关于映射方式参考的网络文章地址:http://blog.csdn.net/xuyongbeijing2008/article/details/8063801 映射方式定义了将逻辑单位转换为设备单位的...转载 2019-01-15 09:09:37 · 643 阅读 · 0 评论 -
程序实现多国语言的动态切换解决方案(转)
以下部分均是参考自前辈写的示例程序的说明文档:程序实现多国语言的动态切换解决方案 实现思想:传统的做法是把所有的资源都放到动态库中,一种语言一个动态库,程序运行的时候通过加载不同的动态库来实现多语言功能。这样做的缺点是不能动态切换语言,如果更换语言后必须重新启动软件。当然,没有人会需要经常的切换语言玩儿,但是采用动态库的方法,如果程序需要修改资源的话,就要更新所有的动态库,这是一个非常...转载 2019-01-08 16:01:14 · 3612 阅读 · 0 评论 -
windows程序设计中MM_TEXT模式下的逻辑坐标与设备坐标的转换
在windows程序设计中,MM_TEXT模式下逻辑坐标和设备坐标原点默认是(0 , 0) ,在客户区左上角。x轴从左到右增加,y轴从上到下增加。当使用SetViewportOrgEx() 和 SetWinodwOrgEX()函数修改设备坐标系和窗口(逻辑)坐标系时,我们该怎么简单的找到逻辑坐标系点(0 , 0 )在变换后的位置,一种简单的方法是移动逻辑坐标系原点去和设备坐标系原点重合(注意:不...转载 2019-01-11 09:00:37 · 851 阅读 · 0 评论 -
vc学习(二)为视图窗口添加滚动条
修改继承基类 1.首先要确定Document的大小,比如400×450.可以将其大小存储在Document类中,也可以直接去设置 2.在代码中把public:C××View:CView中的CView改为CScrollView,以及消息映射中的CView都改掉。如果你怕出错可以将C××View.cpp和C××View.h中的CView都用查找替换为CScrollView。 3...转载 2019-01-11 09:24:37 · 919 阅读 · 0 评论 -
VS2008 利用StringTable实现多语言
越来越多的程序支持多语言切换,或者能自动适应当前系统语言,让自己开发的程序支持多语言不仅可以让自己的程序被国人使用,也能让外国程序爱好者使用。VC开发多语言程序有多种方法,或读取配置文件,或使用不同资源DLL等等。这里介绍以资源形式实现多语言版本。1.打开Visual Studio 2008,新建一个基于对话框工程,名称为LanguageTest,不使用Unicode库 ,资源语言一共有十种(当...转载 2019-01-02 10:01:11 · 1507 阅读 · 0 评论 -
VC/MFC 固定窗口大小、居中显示
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CMDIFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT ...转载 2019-01-11 14:25:48 · 3491 阅读 · 0 评论 -
CFormView动态调整对话框的尺寸并成比例调整部署控件
基于单文档的CFormView动态调整对话框的尺寸并成比例调整部署控件如果你正在开发基于单文档程序,使用了CFormView基类实现多个窗口的显示,那么这个文档可能会给你提供些许帮助。一、实现对话框填充客户区当我们添加了资源对话框时,它的尺寸在客户区显示时是不会随着窗口的大小调整的,当框架尺寸小于它的尺寸时,还出现了滚动条,操作麻烦同时视觉效果也不良好。思路根据客户区的大小调整...转载 2019-01-02 13:27:41 · 880 阅读 · 0 评论 -
逻辑坐标与设备坐标——全窗口坐标、屏幕坐标、客户区坐标的总结
Windows应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定,这个逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单位(如毫米),还可以是用户自定义的一种单位。在Windows应用程序中,只要与输出有关系,都要使用映射模式。 首先谈谈映射模式基本知识,当Windows应用程序在其客户区绘制图形时,必须给出在客户区的位置,其位置用x和y ...转载 2019-01-02 16:20:23 · 1129 阅读 · 0 评论 -
[MFC] 控件大小跟随对话框大小比例变化
网上查阅有多种方法,选学一种笔记如步骤下。1 搭建完成控件随对话框变化比例变化的框架1.1 在对话框类中的消息映射宏中添加对话框尺寸改变时的消息宏BEGIN_MESSAGE_MAP( theClass, baseClass ) ON_WM_SIZE() END_MESSAGE_MAP() ON_VM_SIZE消息,此消息(VC定义的宏)表示只要窗口大小发生变化时...转载 2019-01-03 14:26:05 · 1156 阅读 · 0 评论 -
MFC开发软件支持多语言且同时支持xp和win7操作系统
参考资料:http://www.cnblogs.com/xiaoyusmile/p/3924931.htmlhttp://www.cnblogs.com/xianyunhe/archive/2011/09/02/2163842.html 通过以上两种方案总结实现动态软件支持多语言,不需要重新启动程序:1:在应用程序.APP中添加两个函数://打开窗口INT_PTR CM...转载 2019-01-08 10:39:43 · 699 阅读 · 0 评论 -
VC++ MFC Progress Control 进度条
1.常用函数SetRange(0,100)设置范围;SetStep(int i)设置步长;StepIt();单步递增进度;int SetPos(int nPos) 设置当前位置,可以用来初始化;int GetPos()获得当前进度;2.设置控件Progress Control控件变量。3. m_ProgressFile.SetPos(0);//初始化进度条...转载 2019-03-08 12:21:19 · 833 阅读 · 0 评论 -
mfc调用activex
今天做了一下ActiveX的使用测试,总结一下:首先使用MFC创建一个activeX的控件譬如ActiveXTest,编译成ocx并注册,然后另外编写一个测试程序来调用该控件,发现有几种方式:1:使用project-->Add to Project-->Components and Controls, 然后选择要加入的ocx或者dll,系统会自动生成.cpp和.h文件.并...转载 2019-03-21 09:23:32 · 1249 阅读 · 0 评论 -
一个清理代码工程垃圾资源的使用脚本(非常好用奥)
是不是经常因为MFC日积月累 保存起来越来越大 压缩备份也越来越大这是因为vs本身会生成很多相关的文件,但是不是我们必须的这时候我们可以将他们删除,但是苦于我们知识的有限不能明确哪些资源文件可以删除那么你可以采用我下面的办法一:新建一个Txt文件二:点击文本右键->属性->将txt修改为bat如下图三:选择文件 右键->编辑->...原创 2019-09-20 10:18:19 · 1774 阅读 · 0 评论 -
RegQueryValueEx函数
传送门原创 2019-09-17 14:08:31 · 494 阅读 · 0 评论 -
GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。 用GetClientRect返回的RECT结构...原创 2019-09-17 11:07:13 · 437 阅读 · 0 评论 -
FormatMessage函数
我们写程序,调试出错时用的一个重要函数是 GetLastError(),它会返回一个非负数字给我们,在VS的工具--错误查找里面看相应的描述。FormatMessage函数的功能是格式化一个消息字符串。函数需要一个消息定义(message definition)作为输入。这个消息定义可以通过一个缓冲区或一个已经加载了的消息资源表模块传入本函数。调用者还可以通过搜索系统消息资源表来传入这个消息定...原创 2019-09-17 10:08:59 · 833 阅读 · 0 评论 -
RegOpenKeyEx函数
函数功能描述:打开一个制定的注册表键函数原型:LONG RegOpenKeyEx(HKEY hKey, // 已经打开键的句柄LPCTSTR lpSubKey, // 子键的名称DWORD ulOptions, // 保留REGSAM samDesired, // 安全访问标记PHKEY phkResult // 指向将要打开键的句柄);参数:hkey:当前打开...原创 2019-09-17 08:44:41 · 1762 阅读 · 0 评论 -
CPropertySheet 向导实例开发带源码(MFC类安装程序)
这里是参考了鸡啄米的文章做得一个小实验,可以实现MFC类似安装程序的向导程序。下面是参考的链接:向导对话框的创建及显示下面是源码链接百度云盘实验源码 提取码: 2yqb下面是实验的效果...原创 2019-09-16 15:28:24 · 317 阅读 · 0 评论 -
获取EXE版本信息 GetFileVersionInfo
需要三个函数配合GetFileVersionInfoSize,GetFileVersionInfo,VerQueryValue。1. 前两个函数的使用,为VerQueryValue做准备 DWORD dwInfoSize, dwHandle; dwInfoSize = ::GetFileVersionInfoSize(m_szAppFilePath, &dwHandle);...转载 2019-09-16 14:06:06 · 1427 阅读 · 0 评论 -
CreateMutex函数函数用来实现进程互斥,防止应用程序被多次开启
正常情况下,一个进程的运行一般是不会影响到其他正在运行的进程的。但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的,而且此类程序通常也不允许运行同一个程序的多个实例。这就引出了进程互斥的问题。下面记录一个常用的防止应用程序多开的方法函数原型为:HANDLE CreateMutex( LPSECURITY...原创 2019-09-16 11:23:01 · 1075 阅读 · 0 评论 -
Enable3dControls()和Enable3dControlsStatic()函数简介
CWinApp::Enable3dControlsBOOL Enable3dControls( );BOOL Enable3dControlsStatic( );注意:在这个部分同时描述了Enable3dControls和Enable3dControlsStatic。返回值:如果成功地载入了CTL3D32.DLL,则为TRUE;否则为FALSE。如果操作系统支持控件的三维外观,则这个函数...转载 2019-09-16 11:08:31 · 1146 阅读 · 0 评论 -
GetPrivateProfileInt和GetPrivateProfileString
GetPrivateProfileInt,GetPrivateProfileString(同样包括)这两个函数其实非常简单,一般调用ini等其他文件数据然后与程序进行匹配。原型如下:DWORD GetProfileString(LPCTSTR lpAppName, // 节名LPCTSTR lpKeyName, // 键名,读取该键的值LPCTSTR lpDefault, // 若指定的键...转载 2019-09-16 10:59:58 · 1327 阅读 · 4 评论 -
MFC关于Radio按钮的操作
先为对话框加上2个radio button,分别是Radio1和Radio2。问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,第一种:((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton *)...转载 2019-04-01 16:20:38 · 614 阅读 · 0 评论