|
|
|
italian prefixes Updating progress bar after OnInitDialog
|
|
|
Hi all, I have a dialog-box: when the user presses a button, I would like to show a new modal dialog-box with a progress bar indicating some potentially lengthy operation progress. This operation is done by a worker thread. (The worker thread sends messages to the GUI thread, to update progress bar position.) The problem is that I can't start the thread or send messages to the progress bar from OnInitDialog. So, I thought about this work-around : in OnInitDialog, I create a timer (just 200 ms), and return. When the timer ticks for the first time (i.e. after 200 ms since OnInitDialog returned), the OnTimer handler calls another member function of the dialog-box. This member function starts the worker thread, which can now send messages to GUI thread to update the progress bar (in fact, after OnInitDialog, the progress bar is ready to process messages). (KillTimer is immediately called to avoid new firing of timer events.) Everything is working fine. I just would like to know if there is any different solution to that problem, instead of using a one-shot timer to postpone beginning of work after OnInitDialog. Thanks, Giovanni
|
|
|
|
|
|
|
The administrator has disabled public write access. |
|
|
|
italian prefixes Updating progress bar after OnInitDialog
|
|
|
Hi all, I have a dialog-box: when the user presses a button, I would like to show a new modal dialog-box with a progress bar indicating some potentially lengthy operation progress. This operation is done by a worker thread. (The worker thread sends messages to the GUI thread, to update progress bar position.) The problem is that I can't start the thread or send messages to the progress bar from OnInitDialog. So, I thought about this work-around : in OnInitDialog, I create a timer (just 200 ms), and return. When the timer ticks for the first time (i.e. after 200 ms since OnInitDialog returned), the OnTimer handler calls another member function of the dialog-box. This member function starts the worker thread, which can now send messages to GUI thread to update the progress bar (in fact, after OnInitDialog, the progress bar is ready to process messages). (KillTimer is immediately called to avoid new firing of timer events.) Everything is working fine. I just would like to know if there is any different solution to that problem, instead of using a one-shot timer to postpone beginning of work after OnInitDialog. Giovanni: I'm sure I'm missing something, but why can you not start the thread or send messages to the progress bar from OnInitDialog ? One-shot timer is a common technique for delaying some operation until after the dialog is displayed. Another is to use a custom PostMessage(). But if you are starting a thread, I don't see why you need it, because AfxMessageBox() return immediately. Is this because you have two _layer_s of modal dialogs?
|
|
|
|
|
|
|
The administrator has disabled public write access. |
|
|
|
italian prefixes Updating progress bar after OnInitDialog
|
|
I'm sure I'm missing something, but why can you not start the thread or send messages to the progress bar from OnInitDialog ? One-shot timer is a common technique for delaying some operation until after the dialog is displayed. Another is to use a custom PostMessage(). But if you are starting a thread, I don't see why you need it, because AfxMessageBox() return immediately. Is this because you have two _layer_s of modal dialogs? David: I'm sorry. The problem was in another part of the code. I adjusted something else, and now I don't need to use a posticipating one-shot timer. (Multi-threaded programming is not trivial at all  Giovanni
|
|
|
|
|
|
|
The administrator has disabled public write access. |
|
|
|
italian prefixes Updating progress bar after OnInitDialog
|
|
David: I'm sorry. The problem was in another part of the code. I adjusted something else, and now I don't need to use a posticipating one-shot timer. (Multi-threaded programming is not trivial at all Giovanni Giovanni: posticipating ? Is that an Italian word? It's not English, AFAIK. I like it though...
|
|
|
|
|
|
|
The administrator has disabled public write access. |
|
|
|
italian prefixes Updating progress bar after OnInitDialog
|
|
David: I'm sorry. The problem was in another part of the code. I adjusted something else, and now I don't need to use a posticipating one-shot timer. (Multi-threaded programming is not trivial at all Giovanni Giovanni: posticipating ? Is that an Italian word? It's not English, AFAIK. I like it though...
|
|
|
|
|
|
|
The administrator has disabled public write access. |
|
|
|
italian prefixes Updating progress bar after OnInitDialog
|
|
|
I have a dialog-box: when the user presses a button, I would like to show a new modal dialog-box with a progress bar indicating some potentially lengthy operation progress. This operation is done by a worker thread. (The worker thread sends messages to the GUI thread, to update progress bar position.) The problem is that I can't start the thread or send messages to the progress bar from OnInitDialog. So, I thought about this work-around : in OnInitDialog, I create a timer (just 200 ms), and return. When the timer ticks for the first time (i.e. after 200 ms since OnInitDialog returned), the OnTimer handler calls another member function of the dialog-box. This member function starts the worker thread, which can now send messages to GUI thread to update the progress bar (in fact, after OnInitDialog, the progress bar is ready to process messages). (KillTimer is immediately called to avoid new firing of timer events.) Everything is working fine. I just would like to know if there is any different solution to that problem, instead of using a one-shot timer to postpone beginning of work after OnInitDialog. Thanks, Giovanni
|
|
|
|
|
|
|
The administrator has disabled public write access. |
|