SetTimer not working
Hello,
I have a welcome dialog which registers my users to a web server just after
the application is installed. This registragion may take from 5 to 30
seconds:
void CWelcomeDlg::OnBnClickedOK()
{
DoLengthyProcessing();
this->EndDialog(1);
}
As I said, the processing takes long to finish, so I wanted to show a
feedback to my users that the program hasn't stopped working. I inserted a
Static control and implemented a simple animation:
void CWelcomeDlg::OnTimer(UINT_PTR nIDEvent)
{
CStatic* pLabel = (CStatic*)GetDlgItem(IDC_LBL_PROCESSING);
CString strVal;
pLabel->GetWindowText(strVal);
if (strVal == L"/")
pLabel->SetWindowTextW(L"\\");
else if (strVal == L"\\")
pLabel->SetWindowTextW(L"/");
CDialog::OnTimer(nIDEvent);
}
and changed the previous click event shown before to start the timer:
void CWelcomeDlg::OnBnClickedOK()
{
m_nTimer = SetTimer(1, 1000, NULL);
DoLengthyProcessing();
KillTimer(m_nTimer);
this->EndDialog(1);
}
The problem is the timer isn't working while the lengthy procesing is
running. If I put the SetTimer() and KillTimer() inside the click event of
two command buttons, it works fine.
The processing connects with a Windows Service via named pipe, and the
Windows Service makes the needed registration via web.
Why the timer isn't working? How can I do the same if not with timer?
I tried moving the lengthy processing into a thread and kept the timer in
the main thread, but it not worked as well.
Please help.
Jeova