首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求教怎么在mfc上实现实时监控串口数据用图标指示状态

2013-07-01 
求教如何在mfc上实现实时监控串口数据用图标指示状态现在在做一个程序,要实现的功能是串口收发,同时实现对

求教如何在mfc上实现实时监控串口数据用图标指示状态
现在在做一个程序,要实现的功能是串口收发,同时实现对接收数据的监控。并用不同图片来表示不同的数据状态。

找到了一段
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC_PIC);//获得指向静态控件的指针
HBITMAP hBitmapon=::LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE

(IDB_BITMAP_ON)); //获得位图句柄
HBITMAP hBitmapoff=::LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE

(IDB_BITMAP_OFF)); //获得位图句柄
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); //设置静态控件的样式,使其可以使

用位图,并试位标显示使居中
pStatic->SetBitmap(hBitmapon);  //设置静态控件显示位图

用这个可以实现通过按钮来控制显示不同的图片。。
但是为了实现实时监控,我尝试把他加入串口接收线程函数,结果报错了。
1>.\SerialPortDlg.cpp(214) : error C2352: 'CWnd::GetDlgItem' : illegal call of non-static 

member function
1>        C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\afxwin.h(2244) : 

see declaration of 'CWnd::GetDlgItem'


求教该怎么把这段能在线程函数中使用上面这段代码。
或者有什么别的方法实现监控功能。
我现在就是把接收到的数据放在了一个变量里。想通过这个变量来控制显示不同的图片。
[解决办法]
在串口接收线程函数里发送自定义消息来更新图标,就是先定义个消息:
#define REFRESH_ICON WM_USER+1
再在ON_MESSAGE_MAP里依照自动生成的消息函数来加上自己定义的消息函数(包括头文件里的定义)
[解决办法]
控件的接收函数里接收完数据后再加上发送命令函数:SendMessage,这样就可以执行自定义函数,关于自定义消息函数,你可以按照程序里的已有的消息函数格式写,也可以从网上查一下如何自定义消息
[解决办法]
postmessage是发送不管,并不能保证是不是接收到.你用::sendmessage,而且第一个参数是窗口句柄(就是消息所在的对话框或窗口或MainFrame类),同时,还得在宏映射On_Message_Map(类似这么写的,你看看象控件自动生成的消息函数都在哪些地方存在,仿照它写)

热点排行