本来在主程序中添加一个SetTimer的函数,主要用于控制主界面上的显示问题。
现在另外加了一个线程,将线程中的值通过全局变量传递给另外一个界面。
class CUploadDisplay : public CDialog
...
public:
UINT m_nUploadTimer;
...在主程序中:
CUploadDisplay uploadDisplay;
CWinThread* pThread = AfxBeginThread(uploadThreadRunInBackGround,0);
uploadDisplay.m_nUploadTimer = uploadDisplay.SetTimer(1, 200, NULL);在子界面中添加:
void CUploadDisplay::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//display progress on other dlg
CString tempStatus;
m_DisplayStatus.GetWindowText(tempStatus);
if(tempStatus != up.uploadStatus)
{
m_DisplayStatus.SetWindowText(up.uploadStatus);
}
//display the status of the progress
if (GetDlgItem(IDC_PROGRESS_UPLOAD) != NULL)
{
if (((CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPLOAD))->GetPos() != up.uploadPercent)
{
((CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPLOAD))->SetPos(up.uploadPercent);
}
} if(g.uploadSign)
{
// KillTimer(m_nUploadTimer);
} CDialog::OnTimer(nIDEvent);
}但是并不像主程序中的settimer函数那样,一点反应也没有。请高手指点,万分感谢。
现在另外加了一个线程,将线程中的值通过全局变量传递给另外一个界面。
class CUploadDisplay : public CDialog
...
public:
UINT m_nUploadTimer;
...在主程序中:
CUploadDisplay uploadDisplay;
CWinThread* pThread = AfxBeginThread(uploadThreadRunInBackGround,0);
uploadDisplay.m_nUploadTimer = uploadDisplay.SetTimer(1, 200, NULL);在子界面中添加:
void CUploadDisplay::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//display progress on other dlg
CString tempStatus;
m_DisplayStatus.GetWindowText(tempStatus);
if(tempStatus != up.uploadStatus)
{
m_DisplayStatus.SetWindowText(up.uploadStatus);
}
//display the status of the progress
if (GetDlgItem(IDC_PROGRESS_UPLOAD) != NULL)
{
if (((CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPLOAD))->GetPos() != up.uploadPercent)
{
((CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPLOAD))->SetPos(up.uploadPercent);
}
} if(g.uploadSign)
{
// KillTimer(m_nUploadTimer);
} CDialog::OnTimer(nIDEvent);
}但是并不像主程序中的settimer函数那样,一点反应也没有。请高手指点,万分感谢。
线程中的值通过全局变量传递,这个有问题如果是子窗口 检查一下是不是2个定时器都是1 你的定时器 nIDEvent要鉴别
添加函数是通过添加WM_TIMER的消息实现的,这个应该没有问题。