MFC多线程线程里的变量声明没有作用么?

MFC线程里的变量声明是没用的么?但是也不报错,为什么改成全局变量就可以用了?... MFC线程里的变量声明是没用的么?但是也不报错,为什么改成全局变量就可以用了? 展开
 我来答
传薪网络
2016-01-05 · TA获得超过1360个赞
知道小有建树答主
回答量:635
采纳率:92%
帮助的人:283万
展开全部
  多线程里面的变量声明肯定有作用,其作用限制如下:
  线程中声明的任何变量都只能在本地使用(即只能在声明所在的线程函数中使用)
  因此本地声明的变量无法在其他函数中使用。
  但是对于在线程外部声明的变量,则可以跨线程使用。
  如果外部声明的变量与本地声明的变量重名,则在没有使用域作用符(即::)时,本地的声明覆盖外部声明的变量。
志当存高远389
推荐于2016-07-31 · 知道合伙人互联网行家
志当存高远389
知道合伙人互联网行家
采纳数:11236 获赞数:20410
08年毕业,一直从事计算机行业,从基层做起。有较强的实践操作能力。

向TA提问 私信TA
展开全部
线程函数的原型必须是unsigned int __stdcall ThreadProc( void* p );这一点没有任何质疑。如果你需要在线程函数里控制另外一个线程的对话框,强烈建议你通过向主线程发送消息的方式实现,这样可以避免不稳定的情况出现。比如:

DWORD WINAPI MyThread( void* p )
{
CXXDlg* pDlg = (CXXDlg*)p;
pDlg->SendMessage( MYMSG, 0, 1 );//向对话框发送消息MYMSG。
// or 直接调用pDlg的功能:
pDlg->DoSomething();
}
BEGIN_MESSAGE_MAP(CXXDlg, CDialog)
ON_MESSAGE( MYMSG, OnMyMsg_Thread )
END_MESSAGE_MAP()
void CXXDlg::OnBnClickedTest()
{
HANDLE hThread = CreateThread( NULL, 0, MyThread, this, 0, 0 );
CloseHandle( hThread );
}

LRESULT CXXDlg::OnMyMsg_Thread( WPARAM wParam, LPARAM lParam )
{
DoSomething();
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式