-
VC串口调试、发送和接收消息范例
VC串口调试、发送和接收消息数据范例,这里面涉及到线程控制、串口调试、发送消息、接收消息等编写技巧,还有串口读和写操作,独占方式、延时发送消息,设置发送和接收缓冲区大小等,关于一些参数定义和接收数据函数的代码如下:
OVERLAPPED tOverLaped= {0}; //线程函数使用的OVERLAPPED结构
OVERLAPPED wOverLaped = {0}; //写操作使用的OVERLAPPED结构
OVERLAPPED rOverLaped = {0}; //读操作使用的OVERLAPPED结构
BOOL IsFun = TRUE; //线程是否运行
BOOL IsStop = FALSE; //数据是否发送完毕
//自定义消息处理函数,用于接收数据
void CSeriesPortDlg::OnRecieveData(WPARAM wParam, LPARAM lParam)
{
DWORD res,factbyte;
memset(DataBuffer,0,1024); //初始化数据缓冲区
COMSTAT rst;
ClearCommError(hCom,&res,&rst);//清空串口错误标志,记录当前通信状态
rOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); //创建一个事件对象
if (ReadFile(hCom,DataBuffer,rst.cbInQue,&factbyte,&rOverLaped)) //读取数据到缓冲区中
{
DataBuffer[rst.cbInQue]= 0;
IsStop = FALSE;
}
else
{
res = WaitForSingleObject(rOverLaped.hEvent,5000);
}
IsStop = FALSE;
MessageBox(DataBuffer);
}
- 2023-05-17 19:05:03下载
- 积分:1
-
VC++ 实现对软件的简单加密(注册)功能
VC++ 实现对软件的简单加密,本程序是通过C盘序列号来加密文件,实现软件的注册功能,软件号和C盘序列号同时正确才可验证,而C盘的序列号是唯一的,获得c盘序列号的代码如下:
DWORD VolumeSerialNumber;
GetVolumeInformation("c:",NULL,12,&VolumeSerialNumber,NULL,NULL,NULL,10);
VolumeSerialNumber^=0x12345678;//本机c盘序列号简单运算
m_usernum=VolumeSerialNumber;
UpdateData(false);
然后通过序列的判断,来验证加密是否正确,比如下边的代码来做加密验证:
UpdateData(true);
DWORD num;
num=m_usernum;
num^=0x1999aa98+12;//加密算法
if(!(num==m_serialnum))
{
AfxMessageBox("输入的序列号不正确!");
return;
}
- 2022-11-07 22:05:03下载
- 积分:1
-
VC++在视图中使用鼠标进行绘图操作(涂鸦)
VC++ ——在视图中使用鼠标进行绘图操作(涂鸦),按下鼠标左键,载入"十字"光标,移动鼠标即可实现绘制图形,但窗口不能自动重绘,定义各变量及具体实现:
void CBaseDocViewDemo1View::OnLButtonDown(UINT nFlags, CPoint point)
{
SetCursor(m_Hcursor);//使用新光标
m_bDraw=TRUE;//进入绘图状态
m_pOld=point;
SetCapture();//捕捉鼠标
CRect rect;
GetClientRect(&rect);//获取客户窗口矩形区域
ClientToScreen(&rect);//转换为屏幕坐标
ClipCursor(rect);//限定鼠标不能移出客户窗口
CView::OnLButtonDown(nFlags, point);
}
void CBaseDocViewDemo1View::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bDraw=FALSE;//取消绘图状态
ReleaseCapture();//释放鼠标捕捉
ClipCursor(NULL);//取消鼠标区域的限制
CView::OnLButtonUp(nFlags, point);
}
- 2023-04-03 12:40:04下载
- 积分:1
-
VC++ 创建MFC工作者线程,进行耗时计算
VC++ 创建MFC工作者线程,进行耗时计算,时间显示为一个线程,另外用户可通过菜单中创建一个进度条演示的工作者线程,运行效果如图所示,创建工作者线程相关定义代码:
memset(&font,0,sizeof(LOGFONT));//为字体结构赋初值,默认值
font.lfHeight=30;//字体高度为50
font.lfWeight=600;
strcpy(font.lfFaceName,"Arial");
myfont.CreateFontIndirect(&font); //创建新字体
oldfont=dc.SelectObject(&myfont);//将新字体选入设备环境*/
CTime m_time;
m_time=CTime::GetCurrentTime();//获取当前时间日期
CString str=m_time.Format("当前时间:%H:%M:%S");//格式化
dc.TextOut(20,20,str);//显示时间
dc.SelectObject(oldfont);//恢复设备环境中的旧字体
- 2022-02-11 23:05:26下载
- 积分:1
-
西工大C++ OpenGL 三D台球室场景
收集分享给大家一个C++大作业,是由西工大学生完成的C++ OpenGL 三D台球室场景,这个台球室基于OpenGL的贴图技术实现,用了不少的BMP素材来贴图,不过效果真的挺不错,进入场景后,鼠标拖动、移动均可改变场景角度,台球桌和台球室场景均发生变化,就连窗外的大海也能看清,这个场景完全可扩展一上,用在3D如球游戏中。不过本效果实现,调用了几个外部组件:cygwin1.dll、EaxAc3.dll、glut32.dll、OpenAL32.dll等。最终效果可参见截图所示。
- 2022-05-13 03:54:05下载
- 积分:1
-
VC++演示如何使用insert语句批量向数据库插入数据
VC++演示如何使用insert语句批量向数据库插入数据,这个我感觉挺有用处吧,一般情况下,我们录入都是一条一条的,但信息量较大的时候,就需要批量插入数据了,我们可以先读取外部指定格式的文件,然后将数据转换为可插入的格式,然后使用insert批量向数据库中插入数据,有效提升工作效率。本示例测试前请先准备好数据库并连接上,否则会报错。
- 2022-02-26 09:24:35下载
- 积分:1
-
用VS2008+ATL开发可以显示Gif的ActiveX控件源码
VS2008%2BATL开发Gif的ActiveX控件%28毛坯%29
创建一个空的解决方案,名称GifSolution。将来包含控件项目和测试项目。新建项目,弹出的对话框中选ATL项目,名称为GifAnimate确定。弹出的对话框中选择DLL服务器(可选允许合并代理存根,这样不会产生代理dll),完成后编译,这样工程框架就完成了。
组件分有窗口的和无窗口的,这里应该用有窗口的,所以添加组件的时候,外观不要基于none,最好基于CStatic。因为gif是动态的,应该用另一个线程绘制,这样不影响主线程响应消息,绘图更加流畅。
为GifAnimate项目添加类-选择ATL控件,点击添加,弹出对话框。
1.本文只是举例说明开发过程,抛砖而已。
2.样例只是框架,不能直接使用,所有代码没有经过测试
3.样例接收器GifSink和属性页卡片没有完成,懒了,呵呵
4.样例背景等很多属性没有实现
5.使用了GDI+,但GDI+的Image类的SetActiveFrame函数有问题,网上貌似没有解决办法。Debug版本不影响使用,Release版本没有测试。如果有兴趣,可以使用IPicture接口,网上很多。
- 2022-03-31 20:14:24下载
- 积分:1
-
VC.NET输入框出现气球提示
VC++.net实现输入框气球提示,本源码最主要演示EDITBALLOONTIP的用法。当用户拖动最小化窗口时系统调用此函数取得光标显示,然后调用预设的提示信息显示给用户,让用户知道此输入框应该输入什么类型的内容,用户体验更好。
- 2022-01-26 20:21:11下载
- 积分:1
-
VC++6.0释放EXE资源文件
VC++6.0释放EXE资源文件,要释放的程序是一个简单的MessageBox,基于MFC对话框程序,先插入已经存EXE(或DLL)文件到VC资源文件中。
/* 函数说明:释放资源中某类型的文件
/* 参 数:新文件名、资源ID、资源类型
/* 返 回 值:成功返回TRUE,否则返回FALSE
BOOL CTestDlg::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
{
// 资源大小
DWORD dwWrite=0;
// 创建文件
HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
}
// 查找资源文件中、加载资源到内存、得到资源大小
HRSRC hrsc = FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);
HGLOBAL hG = LoadResource(NULL, hrsc);
DWORD dwSize = SizeofResource( NULL, hrsc);
// 写入文件
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);
CloseHandle( hFile );
return TRUE;
}
- 2022-12-26 04:00:03下载
- 积分:1
-
VC++ 向程序中手工添加WinHelp帮助文件
VC++ 向程序中手工添加WinHelp帮助文件,也就是在程序中调用帮助。一个完善的软件系统,不可缺少帮助系统。本程序演示在VC++开发中,手动从外部添加WinHelp帮助文件,本实例 中是添加调用了Windows7系统中的两个帮助文件,点击菜单项的“帮助”,选择“帮助主题”和“绘制直线帮助”两个功能,即可演示本功能的效果。
- 2022-01-25 14:39:21下载
- 积分:1