thread线程中如何进行Tab控件的切换 VC++
1个回答
展开全部
无论是用哪一种方式 启动一个 新的线程。 都可以利用 其提供的参数传递一个对象供线程里面使用
例如
AfxBeginThread(ThreadProc,&m_tab,THREAD_PRIORITY_NORMAL,0,0,NULL);
m_tab就是一个tab控件的对象,将这个对象的地址(也就是指针)传递给新的线程ThreadProc
而新的线程里 这样处理
UINT ThreadProc(LPVOID Param)
{
CTabCtrl *tab=(CTabCtrl *)Param;
tab指针就是传递过来的tab控件对象指针,想怎么控制tab就怎么控制tab
例如,切换 到第二个标签
tab->SetCurSel(1);
}
例如
AfxBeginThread(ThreadProc,&m_tab,THREAD_PRIORITY_NORMAL,0,0,NULL);
m_tab就是一个tab控件的对象,将这个对象的地址(也就是指针)传递给新的线程ThreadProc
而新的线程里 这样处理
UINT ThreadProc(LPVOID Param)
{
CTabCtrl *tab=(CTabCtrl *)Param;
tab指针就是传递过来的tab控件对象指针,想怎么控制tab就怎么控制tab
例如,切换 到第二个标签
tab->SetCurSel(1);
}
追问
你好,请问怎么样在线程中实现通过按键来切换Tab控件的呢?就像OnSelchangeTab()事件一个效果。我正在做的是,通过socket数据传输时,可以同时进行Tab控件的切换。
追答
我终于明白你意思了,你的意思是说 你开启了socket,然后 程序一直阻塞在sicket,导致你的tab无法切换,
很简单
在一个按钮事件中,或 初始化 函数中开启新的线程
AfxBeginThread(ThreadProc,null,THREAD_PRIORITY_NORMAL,0,0,NULL);
然后再新的线程里 进行网络套接字。
UINT ThreadProc(LPVOID Param)//他是全局函数,可以不定义在类里
{
socket的代码部分搬到这里。就不会阻塞主线程的各种MSG了。
}
还有tab控件标签的选择可以通过 其CTabCtil 的成员函数SetCurSel来改变。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询