在MFC中一个线程要启动一个类的函数可以用SendMessage(该类的句并,...)发送信号,类中回调函数接受到相应信号后启动函数的方法.
但在ATL中可否用这种方法,如可用,那么句并该如何取得?回调函数又如何调用?如不可用,又有什么好的方法实现以上功能?
但在ATL中可否用这种方法,如可用,那么句并该如何取得?回调函数又如何调用?如不可用,又有什么好的方法实现以上功能?
解决方案 »
- 基于CDHtmlDialog的工程中如何添加OnNewweindow3的消息相应
- 窗口闪烁急求解决
- 刚好失业一个月,散分,以此作纪念
- 来者有分:我在Dlg中建了Toolbar,同时有scrollbar,当scrollbar滚动时,整个界面都移动了,包括Toolbar。我希望Toolbar能固定,不随scrollbar移动
- 在ListControl控件中点击完一项时,此项就变成灰色的??
- 有没有vc++做corba的好书呀??
- 如何压缩EXE、DLL文件使它变小。
- 反黄软件的原理是什么?
- 为什么回这样
- 菜鸟问题:如何实现一个“授予权限”的功能
- 写了一个ocx控件,编译时使用Release模式则没问题,但是使用Debug模式,则问题一大堆,好像是找不到什么东西。其中用到了很多C语言的代码
- 怎样隐藏滚动条?
{
private:
...
public:
...
friend unsigned __stdcall _raw_thread_function(void *param);
//将线程函数定义为这个类的友元函数,避免线程内部访问类的私有元素的时候出现错误。
};
unsigned __stdcall _raw_thread_function(void *param)
{
CRawThread *pThis = (CRawThread *)param; //这里将参数转换为原来的类型
IPHEADER *pip;
char buf[2048];
//------------------------------------------------------------------------
if(pThis->CreateSocket())
{
while(1)
{
if(WaitForSingleObject(pThis->m_hExitThread, 0) == WAIT_OBJECT_0)
{
ResetEvent(pThis->m_hExitThread);
goto EXIT_THREAD_0;
}
......
Sleep(30);
}
}
//------------------------------------------------------------------------
EXIT_THREAD_0:
pThis->CleanSocket();
SetEvent(pThis->m_hExitThreadOk);
_endthreadex(0); return 0;
}BOOL CRawThread::StartThread()
{
if(m_hThread == NULL){
//如果线程没有启动,启动线程
m_hThread = (HANDLE)_beginthreadex(
NULL,
0,
_raw_thread_function,
this, //这里传递参数
0,
&m_uThreadId);
return (m_hThread != NULL);
}
return TRUE;
}