欢迎来到天天文库
浏览记录
ID:39623262
大小:102.50 KB
页数:5页
时间:2019-07-07
《线程返回结果到主界面显示》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、线程返回结果到主界面显示1.定义消息:在对话框类的头文件中定义一个自定义消息#defineWM_MY_MESSAGEWM_USER+1002.在类的消息映射表中加入映射项方法:打开对话框的cpp文件,在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()之间添加消息映射ON_MESSAGE(WM_MY_MESSAGE,MyMessage)3.在类中声明该消息的处理函数:方法:在对话框类点击右键,选择“添加成员函数”方法返回值:LRESULT方法名称:MyMessage(WPARAMwParam,LPARAMlParam)2.实现该处理函
2、数longCScanDlg::MyMessage(WPARAMwParam,LPARAMlParam){char*temp=(char*)lParam;charport[20];strcpy(port,temp);m_Result.AddString(port);deletetemp;return0;}2.实现线程函数方法:在类视图中,点开Global,双击theApp,在文件的最后添加一个全局函数,即线程处理函数RecvThread内容如下:UINT__stdcallRecvThread(LPVOIDlParam){char*port=newchar[
3、20];strcpy(port,"80");PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_MY_MESSAGE,0,(LPARAM)port);return0;}其中:PostMessage即线程向主程序的窗口发送一个消息,消息名称为WM_MY_MESSAGE,AfxGetMainWnd()->GetSafeHwnd()为获取主窗口的句柄,消息传递的参数为port3.将此全局函数加入到对话框的头文件中声明内容:UINT__stdcallRecvThread(LPVOIDlParam);2.在button的处理
4、函数中调用线程内容:_beginthreadex(NULL,NULL,RecvThread,NULL,NULL,NULL);注意:此例子中,在启动线程的函数中没有给线程函数传递参数。在端口扫描中需要给这个线程传递参数。参考多线程server.cpp的例子。3.编译程序注意要在VC的工程菜单中设置多线程支持4.运行结果:点击扫描后,线程的执行结果在ListBox中显示出来了。
此文档下载收益归作者所有