
MFC
文章平均质量分 53
一个早起的程序员
主要从事FPGA、ZYNQ、CPU内核、MicroBlaze、STM32、QT、MFC、上位机相关开发,擅长高速接口、视频传输、视频采集,包括PCIe、USB3.0、光纤、SDI、VGA、DVI、HDMI等高速接口。大学期间在学校参加过全国电子设计大赛两届、全国物联网大赛、山东省电子设计大赛、全国信息杯等比赛,并获得全国奖和省级奖十余项。
展开
-
MFC USB调试助手
自己写了一个MFC版本的USB调试助手。目录1.界面2.功能3.代码获取1.界面2.功能(1)遍历所有USB自定义设备;(2)打印USB设备描述符、配置描述符、接口描述符、端点描述符等信息;(3)给指定设备发送数据(传输类型、字节数可指定);(4)从指定设备读取数据(传输类型、字节数可指定)。3.代码获取下面是部分代码,关注【一个早起的程序员】可获取软件源代码。1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。2.原创 2021-01-21 10:51:45 · 4277 阅读 · 9 评论 -
MFC修改控件背景色和字体颜色
1.首先添加WM_CTLCOLOR消息。2.在类的定义里protect: HBRUSH m_brush;3.在WM_CTLCOLOR里面添加如下的代码如下: if (pWnd->GetDlgCtrlID()==IDC_LIST_INPUTREPORT) { pDC->SetTextColor(RGB(0,255,0));//设置字体颜色 pDC->SetBkColor(RGB(0,0,0)); m_brush=::CreateSolidBrus原创 2021-01-19 17:56:05 · 3118 阅读 · 0 评论 -
MFC中的Invalidate、OnDraw、OnPaint函数的作用及绘图概念
1.绘图概念GDI绘图分为背景和前景两个画布的绘制,Invalidate()函数强制重绘制,Invalidate() 如果参数为true则在OnPaint函数对背景先进行绘制,再对前景进行绘制; 如果参数为false则在OnPaint函数对背景不绘制,只对前景进行绘制;绘制前景方法: void xxx::OnPaint() { CPaintDC dc(this); }绘制背景方法: BOOL xxx::OnEraseBkgnd(C...原创 2020-10-27 09:24:07 · 3388 阅读 · 1 评论 -
MFC TeeChart 用法整理一
以下一些TeeChart的用法,大多是从网上七拼八凑得到的,还有一些是我自己摸索的,以下代码经均本人测试,测试环境vc++6.0。 TeeChart的安装方法网上有很多,这里不再赘述。把TeeChart控件添加到工程中后,将其拖到对话框中,然后通过ClassWizard定义一个类变量m_TeeChart。TeeChart简介: TeeCha原创 2016-10-17 14:33:03 · 2778 阅读 · 0 评论 -
MFC TeeChart 用法整理二
最近接手了一个项目,其中涉及到MFC和实时曲线显示的问题,由于我之前从未接触过此类技术,现学现搞,把其间用到的觉得对初学者有用的东西,总结一下。尤其是关于TeeChart控件部分,网上资料零碎,且很多不全面,代码难以使用。我苦寻数周在外国一些网站上寻到了一些有用的信息,把相关的可运行的代码示例贴在文中,希望能帮到后来者。(如有疑问可在帖子后面留言) MFC部分:一、转载 2016-10-17 17:47:29 · 10264 阅读 · 10 评论 -
深入了解Windows句柄到底是什么
转载:http://blog.youkuaiyun.com/wenzhou1219总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。转载 2017-05-11 08:57:07 · 528 阅读 · 0 评论 -
解决的s2010空间丑陋,解决manifest xp不显示控件的方法
1.想要不弹出缺少.dll链接库的框,需要改变 配置属性-C/C++-代码生成-运行库 为 /MT 或 /MTd。2.不想要“基本款”的丑丑的控件外观,可以链接清单文件(manifest)或者加入下面代码#if defined _M_IX86#pragma comment(linker,"/manifestdependency:\"type='win32' name转载 2017-09-02 13:34:20 · 436 阅读 · 0 评论 -
用Windows API进行串口编程的一般步骤及相关函数讲解
虽然使用诸如 CSerialPort VC串口类,MSComm VC 串口控件等非常方便,但有时这些控件并不适合自己的特殊需求,所以有必要了解一下基于Windows API的串口编程方法,下面介绍一下API串口编程的一般步骤及相关串口API函数。串口操作一般有四步,分别是:1) 打开串口2) 配置串口3) 读写串口4) 关闭串口1、 打开串口 在《VC转载 2018-01-03 22:24:22 · 7745 阅读 · 1 评论 -
MFC中高低字节倒序方法 0x12345678 to 0x78563412
其实库中已经有对于双字节和四字节高低字节倒序的函数,非常方便,使用如下:1.包含头文件Windows系统 #include<Winsock2.h>linux系统 #include <arpa/inet.h>2.包含WS2_32.LIB(Project-->Setting-->Object/library modules)...原创 2019-07-26 08:50:39 · 1353 阅读 · 0 评论 -
COleSafeArray二维数组的使用注意
安全数组二维数组的形式行与列的定义与正常的二维数组定义相反。 COleSafeArray olesaWrite; long *pArray = NULL; /*用于定义数组的维数和下标的起始值*/ SAFEARRAYBOUND sabWrite[2]; sabWrite[0].cElements = PIXEL_MAX_ROW; sabWrite[...原创 2019-08-06 14:52:23 · 1036 阅读 · 0 评论 -
CDC类简介
HDC为设备环境的句柄,Windows为了使得在绘制屏幕编程方面变得更为简单,在操作系统之中集成了一个叫做虚拟显示器,这个虚拟显示器有专门的通用API,这个就是我们说的GDI(图形设备接口),之后无论我们的屏幕硬件怎么变化,都可以使用这一套通用的API进行图形的各种显示。HDC句柄就是指向这个虚拟显示器的指针,有了HDC的原创 2016-07-27 09:19:17 · 3960 阅读 · 0 评论 -
网上一些 MFC 精确定时1us的批判
DelayUsvoid DelayUs(int uDelay){ LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus,dfFreq,dfTim; /* Pointer to a variable that the function sets, in counts p原创 2016-07-04 19:05:30 · 2388 阅读 · 0 评论 -
MFC多线程的创建
目录(?)MFC多线程的创建MFC多线程简介MFC多线程基础线程函数工作线程的创建用户界面线程的创建1用户界面线程实例12用户界面线程实例2MFC多线程的创建1.MFC多线程简介MFC对多线程进行了一层简单的封装,在Visual C++中每个线程都是从CWinThread类继承而来的。每一个应用程序的执行都有一个主线程,这个主线程也是从CWinT转载 2016-06-16 08:57:21 · 3406 阅读 · 0 评论 -
MFC如何清理和删除一些消息映射函数
平时在做MFC工程时,难免会遇到很多消息没有使用但是却占用了很多地方,我们想删除但是有害怕破坏整个工程的运行,今天就给大家介绍下MFC清理删除消息映射函数的两种方法:1.手动删除MFC的消息映射类向导会在三个地方产生相应的代码 1.在.cpp文件中的函数体部分 2.消息映射区域的代码 3.头文件的函数声明就是这三个地方,原创 2016-06-05 10:05:52 · 3618 阅读 · 0 评论 -
MFC如何用模拟发送一个伪消息
MFC做工程时我们有时需要在相应的地方加个模拟消息(就是不是真正系统产生的,是我们创造的消息),比如在有些代码里面,没有执行关闭消息,但是我们想在这个地方实现程序的关闭,我们就可以制作一个模拟关闭程序的消息,下面我给大家介绍下具体怎么操作。首先在一个对话框里添加一个按键叫做“发送Ctr+左键点击消息”,ID设置为 IDC_SIMULATEMESSAGE,双击之后添加如下代码:// 用按键发原创 2016-06-05 10:45:31 · 1365 阅读 · 0 评论 -
非系统消息的使用方法及SendMessage()和PostMessage()的区别
1.SendMessage()和PostMessage()相同点:a)能够向指定的窗口内发送窗口消息,既可以是本进程内窗口也可以是其他进程的;(要用FindWindow查找其他进程的句柄)b)既可以发送系统消息(例如WM_LBUTTONDOWM,WM_MOUSEMOVE),范围是1-(WM_USER-1),也可以发送非系统消息(开发者定义的消息),范围是WM_USER-0x7FFF。开原创 2016-06-05 11:04:03 · 2044 阅读 · 0 评论 -
MFC中的WinMain()入口去哪里了?
学过一段时间的MFC之后,很多人大概都有一个疑问:在MFC中,WinMain()哪去了?因为任何一个使用过Win32 SDK编程的人都知道,WinMain()函数是Win32程序开始的入口点,可是在MFC的框架使用中,一般我们只知道从CWinApp类继承得到一个新类,然后重写InitInstance()虚函数,程序框架就可以运行了。哪么,在MFC中,WinMain()倒底去哪了? 似乎微软就转载 2016-06-26 23:05:13 · 8889 阅读 · 0 评论 -
MFC 虚函数
// Test.cpp : Defines the class behaviors for the application.//#include "stdafx.h"#include "Test.h"#include "TestDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FIL原创 2016-06-27 00:05:58 · 2022 阅读 · 0 评论 -
C++动态识别与生成以及在MFC CRuntimeClass的应用
P>C++语言的爱好者们,不知你们注意到了没有,在编写某些程序时,如果能够根据一个类的名字动态地生成此类, 那么,整个程序的结构就能够非常简练.举个例子,你的程序需要用到一个文本文件,而此文件中存放着一些类的名 字,你能根据这些名字动态的生成这些类吗?让我们试着编写如下代码:char szClassName[20]/***********************************原创 2016-06-29 15:37:01 · 2074 阅读 · 1 评论 -
C++虚函数的工程应用2
#include using namespace std;class CObject{public: void MyIsKindOf() { Show(); } virtual void Show() { cout << "class CObject" << endl; }};class Ckilyc : public CObject{public: vi原创 2016-07-22 11:32:11 · 366 阅读 · 0 评论 -
SubClassWindow用法
许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。 我们先看看什么是Windows的子类化。Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但转载 2016-07-12 14:31:21 · 4706 阅读 · 0 评论 -
CreateCompatibleDC CreateCompatibleBitmap实现双缓冲技术
函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。函数原型:HDC CreateCompatibleDC(HDC hdc);参数:hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。 CreateCompatib原创 2016-07-12 15:08:15 · 1149 阅读 · 0 评论 -
MFC双缓冲典型代码
// 双缓冲的典型代码void CRectGroup::OnPaint(){ CPaintDC dc(this); // device context for painting CRect rect; GetClientRect(&rect); CDC mdc; mdc.CreateCompatibleDC(&dc); // 创建内存DC,也就是画布 依附窗口dc CBitmap原创 2016-07-12 15:34:23 · 1482 阅读 · 0 评论 -
MFC复选框的使用
在开发过程中复选框控件的使用也比较广泛我这里为大家分享一下我使用复选框控件的一些技巧。1.我们新建一个Dlg对话框MFC程序2.拖入一个复选框控件,控件ID修改为IDC_CHECK3.拉入一个按钮文本修改为“获取复选框状态”,为按钮添加点击事件判断复选框的选中状态: CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK);int原创 2016-06-01 16:40:09 · 1282 阅读 · 0 评论