thread线程中如何进行Tab控件的切换 VC++

 我来答
amote258
2012-05-10 · TA获得超过1965个赞
知道小有建树答主
回答量:1101
采纳率:0%
帮助的人:948万
展开全部
无论是用哪一种方式 启动一个 新的线程。 都可以利用 其提供的参数传递一个对象供线程里面使用
例如
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来改变。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式