现在的位置: 首页 > 综合 > 正文

小程序员的一天

2013年11月16日 ⁄ 综合 ⁄ 共 955字 ⁄ 字号 评论关闭

针对一个A对话框,点击对话框的备份热钮,程序会备份相关的数据,但由于数据量大时,备份要花一段时间,这段时间,程序会处于未响应状态。为了让程序更友好,决定在备份时的未响应时间段,显示一个表示等待的GIF图片,提示用户程序正在备份。

1。为解决这个问题,我的方法是新建一个B对话框,放GIF图片。然后在A中OnIntial()中Create这个B对话框的一个b对象(设置b为全局变量)。然后在A的备份按钮代码中,创建一个子线程,子线程用于执行备份数据,主线程用来显示GIF图片。这个方法运行是可以的。

2。但是为什么,在主线程中备份数据。在子线程中显示图片就不行呢?我试了好多次。都得不到想要的结果。。现把代码贴上。。希望同道中人给点意见。

这里waitingdlg是上文是提到的b,COlBackupDlg是上文中提到的A。

void WINAPI ThreadFuncBtn1(LPVOID lpParameter)
{
 waitingdlg.ShowWindow (1);
}
void COlBackupDlg::OnButton1()
{
 // TODO: Add your control notification handler code here
   
 HANDLE hThread;
 DWORD ThreadID;
 hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFuncBtn1,this,0,&ThreadID);

 char pwd[32];
 m_pwd.GetPassword(pwd);
 char pwd2[32];
 m_pwd2.GetPassword(pwd2);

 if(strlen(pwd)==0)
 {
  MessageBox("备份密码不能为空!","警告",MB_OK|MB_ICONWARNING);
  ::CloseHandle(m_hevent);

  return;
 }
 if(strcmp(pwd,pwd2))
 {
  MessageBox("备份密码和确认密码不相同!","警告",MB_OK|MB_ICONWARNING);
  ::CloseHandle(m_hevent);

  return;
 }

//备份数据。

。。。。。。。。。。。。。。。。。

 

抱歉!评论已关闭.