自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 EDIT控件对回车键的响应

首先使用类向导在对话框类里边添加虚函数PreTranslateMessage。然后在该虚函数里写如下代码:BOOL C充电插座产品序列号工具Dlg::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if(WM_KEYDOWN ==pMsg->message && VK_RETURN == pMsg...

2019-12-12 14:47:58 599

原创 串口操作——COM

串口通讯可以使用MFC控件,但是vs2010里边默认不带串口控件。串口通讯也可以通过文件来操作,用的是Win32的API函数。下边主要讲通过文件操作。步骤:一、打开串口HANDLE hCom; //串口句柄 hCom = CreateFile( s,//COM口 GENERIC_READ|GENERIC_WRITE, //允许读和写 0, //独占方式,...

2019-05-24 12:09:52 2079 1

原创 CH9326——USB芯片SDK使用步骤

一、CH9326DllInt();//初始化SDK//通过VID和PID打开HID设备m_hHID = CH9326OpenDevice( 0xe316, 0x0707 );if(m_hHID==INVALID_HANDLE_VALUE){ AfxMessageBox("打开HID设备失败"); return ;}if( FALSE == CH9326SetRate( m_h...

2019-05-24 09:23:41 4190

原创 回调函数

回调函数一般是作为其他函数的参数来使用的,实参通过函数名传进去,形参通过函数指针进行接收。为了方便在括号内定义函数指针的形参,就需要为函数指针类型声明一个大写的别名,这样就可以像定义int i,一样,以“类型 变量名”的方式来定义函数指针了。例如对于这样一个函数:INT32 peernvsserch_process(void * _pData,PeerLook * _pNvs);就可以这...

2019-05-22 16:28:04 231

原创 SDK的使用

厂家提供的SDK一般包括三种文件:.h头文件.lib库文件.dll动态连接库把这三种文件放在同一个文件夹sdk里边,把这个sdk文件夹和VC的源文件头文件放在一起。在对话框Cpp文件开始的地方添加以下两行:#include "sdk\clientsdk.h"#pragma comment(lib,"sdk\\libclientsdk.lib")#include "sdk\CH93...

2019-05-22 15:09:08 6835

原创 设备描述表——DC

设备描述表相当于在窗口上方覆盖的一层画布,并且包括了很多在画布上绘制东西的工具(画画,写字等)。他和窗口内容没有什么关系,因为窗口内容在下边的一层。操作设备描述表要用到CClientDC这个类,一般定义一个局部对象就行了。定义对象时,要指定窗口句柄,说明是覆盖在那个窗口上的画布。CClientDC dc(this);dc.TextOut( 300, 230, "正在努力加载,请耐心等待……"...

2019-05-22 11:40:54 265

原创 定时器

步骤:一、头文件里声明定时器消息编号#define WM_TIMER1 WM_USER+1#define WM_TIMER3 WM_USER+3WM_USER之前时系统使用的消息编号。二、类向导Class Wizard,消息里边找到WM_TIMER,添加处理程序。void CMyDlg::OnTimer(UINT_PTR nIDEvent){ // TODO: 在此添加消...

2019-05-22 11:13:34 117

原创 按钮控件消息响应函数

当点击按钮控件时,按钮会发出一个通知消息,然后父窗口会响应这个消息,调用消息响应函数,进行相关处理。但是在其他函数中如果想进行这些处理操作,有两种办法:一、直接调用消息响应函数OnButtonSearch();二、发送命令消息PostMessage(WM_COMMAND,MAKEWPARAM(IDC_BUTTON1,BN_CLICKED),NULL);...

2019-05-22 10:36:59 1381

原创 清空ARP缓存

//清空ARP缓存,这个函数创建新的进程后立即返回,而不管新的进程是否已经执行完成,所以在后边要加一个延时,保证arp缓存清除完毕。WinExec("arp -d",SW_HIDE);Sleep(1000);什么时候会用到清空ARP缓存呢?当一个旧的设备被换掉,一个新的设备使用了旧设备的IP地址,接入网络后,电脑的ARP缓存中存的还是这个IP地址对应的旧的设备的MAC地址,就会造成电脑无...

2019-05-22 10:15:17 7605

原创 获取电脑网卡信息

以下代码只适用于有一个网卡的情况,多个网卡时,应该禁用多余的网卡。ULONG outBufLen = 15000;//15k内存空间PIP_ADAPTER_ADDRESSES pAddresses;PIP_ADAPTER_ADDRESSES pAddresses1;//备份指针,释放内存时用pAddresses = (IP_ADAPTER_ADDRESSES *)malloc(outB...

2019-05-22 10:00:05 580

原创 UDP网络编程

步骤:一、加载套接字库二、创建套接字三、套接字绑定四、创建接收线程五、启动发送一、加载套接字库if(!AfxSocketInit()){ AfxMessageBox("加载套接字库失败!"); return;}二、创建套接字SOCKET m_socket;m_socket = socket(AF_INET,SOCK_DGRAM,0);if(INVALID_SOCKE...

2019-05-21 16:40:54 276

原创 ini文件

char pbIniFileBuf[260] = {0};int i = ::GetPrivateProfileString( “SYSTEM_INFO”, “LoginPwd”, “”, pbIniFileBuf, 260, “.\DevConfig.ini” );参数(字段名,键名,键值字符串,字符串长度,完整的文件名)::WritePrivateProfileString(“SYSTE...

2019-05-21 11:56:30 342

原创 控件知识点汇总

控件的显示与隐藏GetDlgItem(IDC_CHECK0)->ShowWindow(SW_SHOW);//显示GetDlgItem(IDC_CHECK0)->ShowWindow(SW_HIDE);//隐藏设置控件文本内容GetDlgItem(IDC_CHECK7)->SetWindowText(“text”);//内容获取控件文本内容CString s1; ...

2019-05-21 10:47:53 199

原创 静态成员

静态成员函数属于这个类,而不属于某个对象,所以调用时不能通过对象加点来调用,只能用类加连两个冒号来调用。例如:CTime t = CTime::GetCurrentTime();//获取当前时间...

2019-05-20 14:21:29 315

原创 日历和时间

有两种方法一、CTime类CTime t = CTime::GetCurrentTime();//获取当前时间t.GetYear();//1970-2038t.GetMonth();//1-12t.GetDay();//1-31t.GetHour();//0-23t.GetMinute();//0-59t.GetSecond();//0-59t.GetDayOfWeek();//...

2019-05-20 14:19:20 765

原创 动态改变对话框大小

首先,需要在改变大小的对话框中添加一条分隔条,分隔条是用图像控件制作的Picture Control,分隔条的位置就是对话框变小时所在的位置。修改分隔条ID为:IDC_SEPARATOR,选择Sunken属性,意思是下陷。然后在需要修改的地方加入以下代码:static CRect rectLarge;static CRect rectSmall;if( rectLarge.IsRectNu...

2019-05-20 11:14:28 781

原创 更换主对话框

更换打开程序的第一个对话框,需要在APP类中进行,在CmyApp.cpp文件中的InitInstance函数中,修改创建主对话框的类名即可。CMainDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse == IDOK){ // TODO: Place code here to handle ...

2019-05-20 10:45:22 157

原创 新建对话框

步骤:一、建立资源。在资源视图中新建对话框的样式,然后双击对话框出现类向导,填写类名,例如CTestDlg,注意:C大写,首字母大写,后边必须加上Dlg,说明是对话框类。点确定后,就会生成.cpp和.h文件。二、在需要显示对话框的父窗口程序中,加入以下代码://定义一个子对话框实例CMyDlg dlg;//子对话框初始化,可以指定对话框的显示内容等/*临界区*/g_clsCritica...

2019-05-20 10:39:06 404

原创 文件读写操作

文件操作一般使用CFile类。写文件相对比较简单,即使文件不存在,也可以新建:CFile file( s1, CFile::modeCreate|CFile::modeWrite ); file.Write( m_InfoList, sizeof(INFOLIST_DATA)*LISTNUMDATA);file.Close();读文件要相对复杂一些,因为首先要确认文件存在才行,否则就会...

2019-05-20 10:02:03 583

原创 文件查找——CFileFind

//删除过期文件 CString s,s1,s2,s3;CFileFind finder;//创建搜索对象BOOL bWorking=finder.FindFile("list*.bin");//开始搜索,但是即使搜到了第一个文件,也不去获得它的句柄if(bWorking){ //搜索到了第一个文件 bWorking=finder.FindNextFile();//获取第一...

2019-05-17 14:58:05 649

原创 临界区

步骤:1、创建临界区对象全局变量CCriticalSection g_clsCriticalSection; //临界区对象2、临界区对象的使用/*临界区*/g_clsCriticalSection.Lock();//需要操作数据,申请临界区……/*临界区*/g_clsCriticalSection.Unlock();//数据操作完毕,释放临界区注意必须成对使用,否则会死锁。...

2019-05-17 11:15:03 93

原创 CString

CString字符串对象功能比较强大,而且全面。经常会用到CString对象和字符串数组之间的转换。网上介绍了很多使用指针进行转换的方法,都是针对同一块内存来操作的,而且很容易出错。我倾向于不使用指针,而使用复制的方法,即把CString对象的内容复制到字符串数组中,或者把字符串数组的内容复制到CString对象中。这样两个变量同时存在,想用那个用哪个,并且可以随时通过复制来保持一致。一、字符串...

2019-05-17 10:26:47 1829

原创 组合框控件——Combo Box

一、先创建资源,创建资源时下拉框大一些,否则下拉框显示不出来。type属性:选Drop List,意思为下拉列表组合框,但不可编辑。sort属性:选False,意思是不对列表内容进行排序。二、往组合框中添加内容((CComboBox*)GetDlgItem(IDC_COMBO_VOLUME1))->AddString("0");//index:0((CComboBox*)GetDl...

2019-05-16 17:28:26 724

原创 位段 位域

单片机使用的是小端(小尾)模式,电脑使用的是大端(大尾)模式,所以定义位段时不一样。电脑使用#pragma pack (1)typedef union _BYTE_BITS{BYTE byte;struct{ unsigned char bit0:1;//最低位 unsigned char bit1:1; unsigned char bit2:1; ...

2019-05-16 16:27:44 166

原创 保证应用程序只有一个实例运行

以下代码必须添加到应用程序App类的InitInstance函数里,放在创建主对话框之前,不能添加到Dlg类里边。// 创建互斥量HANDLE _hMutex = CreateMutex( NULL, TRUE, "车牌管理系统" );//不同应用使用不同的名字if ( _hMutex == NULL ){ return FALSE;}// 如果程序已经存在并且正在运行if (Ge...

2019-05-16 15:31:36 455

原创 结构体声明注意事项

针对单片机的上位机程序开发,经常会遇到结构体内部成员长短不一致的情况,有1字节的,有2字节的,还有4字节的。在VC编程时,如果不加处理,都会自动按照4字节进行对齐,导致赋值时出现错误。处理方法如下://头文件中#pragma pack (1)typedef struct //文件下载{ u8_t type; //子帧标识 u32_t size; /...

2019-05-16 14:31:10 1281

原创 新建线程

任何函数都可以新建自己的子线程,互相之间没有影响。新建线程是一个临时变量,所以句柄命名可以一样。 //新建一个线程 HANDLE hThread1 = CreateThread(NULL,0,SendProc,(LPVOID)this,0,NULL); CloseHandle(hThread1);第三个参数是线程函数的名字。第四个参数:向线程函数传递的参数,是一个可以指向...

2019-05-16 11:15:31 181

原创 HEX文件

:020000040000FA我把它看做 0x02 0x00 0x00 0x04 0x00 0x00 0xFA第一个 0x02 为数据长度。紧跟着后面的0x00 0x00 为地址。再后面的0x04为数据类型,类型共分以下几类:‘00’ Data Record//数据记录‘01’ End of File Record//文件结束记录‘02’ Extended Segment Addre...

2019-05-16 10:25:00 194

原创 IP地址控件——IP Address Control

空内容判断if( ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->IsBlank() ){ MessageBox("请填写设备IP地址"); return;} 设置控件内容char * strIP = "127.0.0.1";struct in_addr addrIP;addrIP.S_un.S_addr = inet_...

2019-05-15 18:22:17 3923

原创 文件打开和保存对话框

打开文件对话框//创建打开对话框CFileDialog fileDlg(TRUE);//TRUE是打开,FALSE是保存fileDlg.m_ofn.lpstrFilter = "HEX Files(*.hex)\0*.hex\0\0";//文件过滤器if( IDOK == fileDlg.DoModal() ){ //读取文件内容 CFile file( fileDlg.GetFile...

2019-05-15 16:33:59 372

原创 列表控件——List Control

控件的几个属性(在添加列表控件资源时就选好):View:显示,分4钟:图标,小图标,列表,报告。分别对应window窗口内文件的几种查看方式:平铺,图标,列表,详细信息。选择报告才能显示多列信息,否则只能显示第一列。Single Select:单选,即列表中只有一行会选中高亮显示;否则,按Ctrl键可以同时多行选中高亮显示。和前边复选框是否打钩没有关系。Always Show Selecti...

2019-05-15 10:13:54 961

原创 右键弹出菜单——POPUP

1

2019-05-14 14:19:51 1024

原创 csv文件的操作

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个很长的字符串。CSV文件由任意数目的记录行组成,记录行之间以某种换行符分隔;每行记录由任意数目的字段组成,每个字段之间以分隔值分隔。CSV文件数据的生成char plate[16]={0};//车牌号ch...

2019-05-14 09:59:01 553

原创 调试技巧

调试——>窗口——>内存快捷键:Alt+6

2019-05-14 09:32:55 144

原创 MessageBox()简易对话框的用法

MessageBox显示一个模态对话框,返回一个整数值,该值指示用户单击了哪个按钮。MessageBox( “内容字符串”, “标题字符串” );//直接显示提示信息,对返回值不感兴趣。标题字符串可以省略,使用父窗口的标题。if( IDYES == MessageBox( “内容字符串”, “标题字符串”, MB_YESNO ) ){}//带有yes no两个按钮。...

2019-05-14 09:19:19 1245 1

原创 字符串转数字方法

第一种:int bNo = atoi(s1);如果没有执行有效的转换,则返回零。第二种:char s1=“123,456 789”;int sscanf( s1, “%d,%d %d”, i1,i2,i3);返回成功赋值的字段个数。同时还有%x,%o,%u无符号整数。字符串转数字的方法中并没有针对CString对象的方法,所以,在需要获取字符串中数字的情况下,最好不要使用CStri...

2019-05-14 09:03:17 977

原创 数字转字符串方法

1、 itoa(i ,num ,10 );i ---- 需要转换成字符串的数字num ---- 转换后保存字符串的变量10 ---- 转换数字的基数(即进制)。10就是说按10进制转换数字。还可以是2,8,16等等你喜欢的进制类型返回值:指向num这个字符串的指针欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mark...

2019-05-13 16:46:24 3674

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除