SetTimer not working
- From: "Jeova Almeida" <jeovaalmeida@xxxxxxxxx>
- Date: Sat, 9 May 2009 16:34:45 -0400
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
.
- Follow-Ups:
- Re: SetTimer not working
- From: Joseph M . Newcomer
- Re: SetTimer not working
- From: David Ching
- Re: SetTimer not working
- Prev by Date: Re: How to setup self-contained ToolTip coverage in CEdit control
- Next by Date: Re: how to align text to center vertically in an edit control box
- Previous by thread: c all study notes
- Next by thread: Re: SetTimer not working
- Index(es):
Relevant Pages
|