Avatar billede glacier Nybegynder
07. december 2006 - 11:45 Der er 6 kommentarer og
1 løsning

Åbne dialog og lukke den automatisk igen.

Hej

Jeg søger en måde hvorpå man kan åbne en dialog, lade den være åben i et givent tidsrum og derefter lukke den igen.
Er der nogen som kan hjælpe?
Avatar billede tokelil Nybegynder
07. december 2006 - 14:05 #1
Kan du ikke bare sætter en timer og når den udløber sende WM_CLOSE til dialogboksen?
Avatar billede glacier Nybegynder
07. december 2006 - 15:30 #2
Det var egentligt også det jeg havde regnet med at gøre.
Men problemet er et jeg ved ikke hvilke event jeg skal kalde timeren i.
Dialogen bliver ikke vist hvis jeg kører timeren i OnInitDialog eller OnPaint.
Avatar billede tokelil Nybegynder
07. december 2006 - 15:48 #3
Du har vel en eller anden event der tricker den dialog boks? F.eks. en knap eller lign. hvor du har:
dlg->DoModal();
Der kan du vel bagefter oprette en timer med en callback function der lukker dialogen igen.
nTimerID = SetTimer(NULL, NULL, nTimeout, DialogCloseCallback);
Avatar billede jpk Nybegynder
08. december 2006 - 07:57 #4
Er det Win32 API eller MFC? (funktionsnavnene du bruger kunne tyde på det sidste?)
... eller måske noget helt andet...
Avatar billede glacier Nybegynder
08. december 2006 - 09:19 #5
Det er MFC
Avatar billede jpk Nybegynder
08. december 2006 - 10:40 #6
Sæt en timer i dialogens OnInitDialog (fx About dialogen):
SetTimer(1, 3000, NULL);

Lav en WM_TIMER handler (gør det v.h.a. guiøen, så får du automatisk message map entry med:
void CAboutDlg::OnTimer(UINT nIDEvent)
{
    // TODO: Add your message handler code here and/or call default

    CDialog::OnTimer(nIDEvent);
    KillTimer(1);
    CDialog::OnOK();
}
Avatar billede jpk Nybegynder
08. december 2006 - 10:42 #7
guiøen = gui'en.
Altså, find WM_TIMER i message listen for dialogen og opret en handler dér.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester