hur.cn - 华软网

 热门搜索

ui线程怎么创建,如何通过ui线程将数据显示到窗口控件上

  作者:未知    来源:网络    更新时间:2011/4/15
mfc项目窗口中有一个edit control控件我现在建好了一个事情线程用来时时接受udp数据,怎么建立ui线程来显示这些数据呢,对ui线程的观点都不是很懂,大概是用来画ui的一个线程。。。
在一个控件上显示一个数据用什么函数呢,就用SetWindowText能够吗??
对vc不熟悉感觉用起来很费力。。。。


---华软 网友回答---
AfxBeginThread();
 
C++">CWinThread* AfxBeginThread(
   AFX_THREADPROC pfnThreadProc,
   LPVOID pParam,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);
CWinThread* AfxBeginThread(
   CRuntimeClass* pThreadClass,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);
 


The first form of AfxBeginThread creates a worker thread. The second form creates a user-interface thread. 
---华软网友回复---
ui线程应该就是有消息行列的线程.和普通线程也没什么区别.
---华软网友回复---
我创建UINT   show_udp_name(LPVOID   lparam) 
{
 GetDlgItem(IDC_EDIT2)->SetWindowText(sData2);
}这样一个函数然后再通过线程来执行,能够吗???

sData2是通过另一个事情线程获得的,现在这个函数也报错error C2660: “GetDlgItem”: 函数不接受 1 个参数为什么???SetWindowText只可显示一个常量吗??
---华软网友回复---
线程函数是全局的或是静态的, GetDlgItem是窗口的成员函数,需要对象来引用,能够在创建线程的时候把类的对象指针传进去。然则最好也不要这样做,在线程中直接操作界面可能引用犯错。正确的做法应该是向窗口发送消息,带上参数,然后在窗口消息响应函数中去设置edit的内容,这样是平安的。
UI 线程有一个消息行列,线程从消息行列中掏出消息传送给窗口的进程函数去执行。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。