Solved

Modal Dialog 'time out'...

Posted on 1998-06-07
7
279 Views
Last Modified: 2008-02-01
Hello all,
Regarding Dialogs : I am trying to find a way to automatically exit from a Dialog called like this : DlgOpen.DoModal();
It is a CDialog class.
In fact I have a OK button but I also want to close this dialog after 30 seconds (for example). I dont know which
Message I am supposed to use with my Dialog object.
I am using VC++ 5,

Many thanks,
WW
0
Comment
Question by:wwalschaerts
  • 5
  • 2
7 Comments
 
LVL 6

Accepted Solution

by:
WxW earned 150 total points
ID: 1165338
Create a timer and send a WM_CLOSE message to the window
0
 
LVL 6

Expert Comment

by:WxW
ID: 1165339
Set Timer :
int k;

k = ::SetTimer(0,0,TimeInMilliseconds,(TIMERPROC)MyProc);

....

void CALLBACK MyProc(HWND,UINT,UINT,DWORD)
  {
  KillTimer(0,k);
  SendMessage(HwndOfDialog,WM_CLOSE,0,0);
  }

0
 
LVL 6

Expert Comment

by:WxW
ID: 1165340
In case that you need more help , let me know :)
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:wwalschaerts
ID: 1165341
Hum, Don't really understand !

I am working with Classes so I have tried to insert :
"k = ::SetTimer(0,0,TimeInMilliseconds,(TIMERPROC)MyProc);"
into the CDialog definition like this (not sure it is correc) :
COpen_dlg::COpen_dlg(CWnd* pParent /*=NULL*/)
      : CDialog(COpen_dlg::IDD, pParent)
  {
  //{{AFX_DATA_INIT(COpen_dlg)
  // NOTE: the ClassWizard will add member initialization here
  //}}AFX_DATA_INIT
  Timer = ::SetTimer(0,0,10000,(TIMERPROC)Timer_Proc);
  }

Then I don't know how I can find the HWND du Dialog?

Thanks for your help,
WW
0
 
LVL 6

Expert Comment

by:WxW
ID: 1165342
Hmm you should check if the CDialog class , has a public member ( e.g. Borland's TDialog has HWindow , in which one stores the HWND of the window ) . Or find a function like GetWindowHandle() , or something , to get the HWND of the window

If you do not find anything , you must do this :

Instead of using ::SetTimer() API , you should use CDialog :: SetTimer() ( I believe that CDialog will have such a function )

This will not call a TIMERPROC function after the timeout , but rather it passes WM_TIMER messages to the window proc . You can handle messages from CDialog :: WindowProc ( Again I am not sure for the name , because I use borland ) .

In all cases , the message that you will send is WM_CLOSE

0
 
LVL 6

Expert Comment

by:WxW
ID: 1165343
And please note that a HWND public member of CDialog , will be set only after the window has been created . Thats why you should not take the HWND from the constructor , but rather from a function that is called after the Window is created , but before it is executed . Borland has TDialog :: SetupWindow for this job

This is an example of a code

void COpen_dlg :: SetupWindow() (?)
{
CDialog :: SetupWindow(); (?) // Call the parent SetupWindow
HWNDDialog = HWindow; // or something like CWindow , CWnd or else
}

and then you have the HWND for the dialog , and you can use it in your timer function
0
 

Author Comment

by:wwalschaerts
ID: 1165344
Thanks a lot,
WW

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now