在MultiThread5Dlg.h文件中添加一个结构的定义:struct threadInfo
{
  UINT nMilliSecond;
  CProgressCtrl* pctrlProgress;
};线程函数的声明:
UINT ThreadFunc(LPVOID lpParam);注意,二者应在类CMultiThread5Dlg的外部。  在类CMultiThread5Dlg内部添加protected型变量:
CWinThread* pThread;在MultiThread5Dlg.cpp文件中进行如下操作:定义公共变量:
threadInfo Info;
//双击按钮IDC_START,添加相应消息处理函数:void CMultiThread5Dlg::OnStart()
{
  // TODO: Add your control notification handler code here
  UpdateData(TRUE);
  Info.nMilliSecond=m_nMilliSecond;
  Info.pctrlProgress=&m_ctrlProgress;
  pThread=AfxBeginThread(ThreadFunc,
    &Info);
}
//在函数BOOL CMultiThread3Dlg::OnInitDialog()中添加语句:
{
  ……
  
  // TODO: Add extra initialization here
  m_ctrlProgress.SetRange(0,99);
  m_nMilliSecond=10;
  UpdateData(FALSE);
  return TRUE; // return TRUE unless you set the focus to a control
}
//添加线程处理函数:
UINT ThreadFunc(LPVOID lpParam)
{
  threadInfo* pInfo=(threadInfo*)lpParam;
  for(int i=0;i<100;i++)
  {
    int nTemp=pInfo->nMilliSecond;
    pInfo->pctrlProgress->SetPos(i);
    Sleep(nTemp);
  }
  return 0;
}请问定义公共变量是不是在class CAboutDlg : public CDialog
{
public:
threadInfo Info;//添加
但是运行后报错~请问为什么?

解决方案 »

  1.   

    你的Info定义的位置错了。。你定义的位置是关于对话框的类,应该定义在主对话框类里,不过你能编译通过我就觉得奇怪了。。
      

  2.   

    请问定义公共变量是不是在class CAboutDlg : public CDialog 

    public: 
    threadInfo Info;//添加 
    但是运行后报错~请问为什么?
    =========
    这个不是公共变量,而是类的成员变量,全局公共变量一般定义在CPP文件中,只要写在函数的外面就行了.
      

  3.   

    全局变量写到MultiThread5Dlg.cpp的include后面就可以了,方便醒目,
      

  4.   

    public: 
    threadInfo Info;//添加 这哪是什么公共变量,这是类成员(都可访问)变量。不知道你说的公共变量是指全局变量还是,类的static变量(这是类或者成为族的共享变量)。
    全局变量:就是在在cpp文件的前面定义。

    //-----类.cpp文件
    type g_var;要是static变量就是在类里面声明,但是必须在cpp文件里面初始化(即给出内存);
    如:
    //类.h----文件
    class 类
    {
      static type share_static; 
      .....
    };
    //---------类.cpp文件
    type share_static=值;