MSVC++ въпрос...
7 отговора
360 прегледа
MSVC++ въпрос...
Искам да изведа съобщение подобно на MessageBox, което след няколко секунди да изчезне (без бутони). Рових в МSDN за пример, но неможах да намеря. Къде мога да намеря пример или накакви ориентира как се прави това? Предварително благодаря.
Re: MSVC++ въпрос...
Можеш просто да изведеш един модален диалог, сетваш му един таймер и след няколко секунди извикваш CDialog::OnOK или CDialog::OnCancel.
За да не се затваря при натискане на enter или eskape или ALT+F4 предефинираш функциите OnOK и OnCancel и ги оставяш празни.
Pozdravi ot Bourgas.
За да не се затваря при натискане на enter или eskape или ALT+F4 предефинираш функциите OnOK и OnCancel и ги оставяш празни.
Pozdravi ot Bourgas.
CDialog::EndDialog(int)
Ако предефинира OnOK() и OnCancel() ще е по-разумно да извика EndDialog(). Иначе диалога няма да се затвори ;)
-
пуша си в каруцата
-
пуша си в каруцата
Re: MSVC++ въпрос...
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
HWND hDlg = CreateDialog(....);
WaitForSingleObject(hEevent, desired_time);
EndDialog(hDlg, 0);
Я вышел им наперерез...
HWND hDlg = CreateDialog(....);
WaitForSingleObject(hEevent, desired_time);
EndDialog(hDlg, 0);
Я вышел им наперерез...
хм..
с EndDialog() се унищожава модален диалог (тези с DialogBox), за немодалните диалози (създадени с CreateDialog()) трябва да се ползва DestroyWindow()
целият този номер с event-a е по-сложен вариант на простичкото Sleep(desired_time )
при положение (както е написано), че няма message loop - WaitForSingleObject веднага следва CreateDialog - това значи че ако покрием диалога с друг прозорец и след това отместим другия прозорец, диалогът няма да се прерисува... лоша работа.
целият този номер с event-a е по-сложен вариант на простичкото Sleep(desired_time )
при положение (както е написано), че няма message loop - WaitForSingleObject веднага следва CreateDialog - това значи че ако покрием диалога с друг прозорец и след това отместим другия прозорец, диалогът няма да се прерисува... лоша работа.
Re: CDialog::EndDialog(int)
Това което казах е да направи следното извикване:
CDialog::OnOK(); или CDialog::OnCancel();
а не OnOK(); или OnCancel();
Съгласи се, че има разлика.
Pozdravi ot Bourgas.
CDialog::OnOK(); или CDialog::OnCancel();
а не OnOK(); или OnCancel();
Съгласи се, че има разлика.
Pozdravi ot Bourgas.
Re: хм..
Това е така, разбира се :)
Какво се случва, когато не гледаш mdsn lib-а
По-късно ще напиша нещо вярно :)
Я вышел им наперерез...
Какво се случва, когато не гледаш mdsn lib-а
По-късно ще напиша нещо вярно :)
Я вышел им наперерез...
Re: На всички...
Благодаря много
. Ориентирах се в общи линии
и оставих този вариант:
m_dWaitBox.m_swaitmess="Please wait for ...";
m_dWaitBox.Create(IDD_WAITBOX); //DoModaless();
m_dWaitBox.ShowWindow(SW_SHOWNORMAL);
m_dWaitBox.UpdateWindow();
.
// {test units}
.
Sleep(2200);
.
if(m_dWaitBox )
{
m_dWaitBox.DestroyWindow();
}
и оставих този вариант:
m_dWaitBox.m_swaitmess="Please wait for ...";
m_dWaitBox.Create(IDD_WAITBOX); //DoModaless();
m_dWaitBox.ShowWindow(SW_SHOWNORMAL);
m_dWaitBox.UpdateWindow();
.
// {test units}
.
Sleep(2200);
.
if(m_dWaitBox )
{
m_dWaitBox.DestroyWindow();
}