做产品软件,我们经常遇到的是软件更新问题,更新问题涉及到的内容还比较多。
1.是打开软件要自动检测,这样就需要一个多线程来实现。
2.要在网上下载最新版本的版本号,与本地文件比较,有更新就需要从指定站点下载最新的软件包。
3.下载过程中需要显示下载的进度,需要使用进度条软件。
4.下载完成后的安装包我们需要自动安装。
在这里我们先来讲一下多线程自动检测。
首先定义一个线程函数:
UINT update(LPVOID pParam);
UINT update(LPVOID pParam)
{
}
然后在OnTimer函数中开线程:
void CLOGIN::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 100)
{
KillTimer(nIDEvent);
AfxBeginThread(update, this);
}
CDialog::OnTimer(nIDEvent);
}
由于自动更新我们只需要在打开软件的时候运行一次即可,所以要先KillTimer(nIDEvent);
然后在初始化函数里面设置时钟,让他一起动就运行:
BOOL CLOGIN::OnInitDialog()
{
CDialog::OnInitDialog();
SetTimer(100,1000,NULL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
当然也可以直接在初始化函数里面:
BOOL CLOGIN::OnInitDialog()
{
CDialog::OnInitDialog();
AfxBeginThread(update, this);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
这样我们在打开软件的时候就会知道运行线程函数里面的内容了!