|
I wonder how to hide the main dialog in a dialog based app, and display it again later ? please gimme any example !
|
|
|
|
|
Call ShowWindow() and pass SW_HIDE or SW_SHOW to hide or show it, respectively.
--Mike--
http://home.inreach.com/mdunn/
Time is an illusion; lunchtime doubly so.
|
|
|
|
|
Yeah, it works fine , but i want to hide it after creation (for tray use)
the programs initial state should be residing in tray, and after double clicking i want to show the main dialog
inserting ShowWindow(SW_HIDE); in OnInitDialog doesnt work !
Any ideas ?
|
|
|
|
|
Yeah, it works fine , but i want to hide it after creation (for tray use)
the programs initial state should be residing in tray, and after double clicking i want to show the main dialog
inserting ShowWindow(SW_HIDE); in OnInitDialog doesnt work !
Any ideas ?
|
|
|
|
|
Either of two straight forward methods,
1. Run your App from a Child of your hidden Dialog.
2. Remove || Replace the AppWindow style if you are using MFC from your .rc file,
Regardz
Colin Davies
|
|
|
|
|
Hmm, i must say i have no idea what you mean
My only Goal is to code an Application, that sits in Tray on Startup (no window displayed) and when you doubleclick the tray icon the main window should be shown. And it has to be dialog based !.
Hoping for further explanations. (I'm a quite newbie)
|
|
|
|
|
Hi!
Knowing that even a dialog based app is an app already! So you'd have an application class in MFC that is named: CwhateverApp Right?
OK, then do this in the InitInstance() function:
BOOL CwhateverApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
return FALSE;
}
And then if you have a menu item that's used to load the dialog again, then that's where you gotta call the DoModal() funtion to show the window.
Hope this helped!
|
|
|
|
|
It worx, big thanks !!!!!!
I already hat this idea before "BUT" i did return TRUE; and got presented a nice debug assertion error
It works ! It works ! YAHOOOOOOOOOOOOOOOOOOOOOO !
|
|
|
|
|
Argh, damn i was wrong, it doesnt work, if i dont call DoModal, the whole application doesnt start (->Task list). Any other ideas ?
|
|
|
|
|
Have you tried setting the dialog box to not be visible (using the resource editor)?
|
|
|
|
|
Yep, but with no success
|
|
|
|
|
Yep, but with no success
|
|
|
|
|
I would bet there's some code here on CodeProject to do that very thing. I can get the diloag to hide itself, but it shows up in the taskbar (not the system tray). The way I hid the dialog (dialog-based app) was to call MoveWindow in OnInitDialog() and position the window WAY off the visible desktop. The code is still running, but you just can't see the dialog.
Here's a link to a comment from someone on how to make a dialog-based app not put anything in the taskbar, too.
http://www.codetools.com/docview/notaskbaricon.asp?app=100&df=100&exp=0&forumid=77&fr=1&main=/docview/notaskbaricon.asp&select=1058#xx1058xx
Or if you want to minimize the app to the system tray, go here:
http://www.codetools.com/useritems/trayicons.asp
There's also a comment that points out other articles on CodeProject that (I suspect) discuss the same thing.
|
|
|
|
|
I wonder if its possible anyway to start a dialog hidden
|
|
|
|
|
I wonder if its possible anyway to start a dialog hidden
|
|
|
|
|
How is that? I just tried what I gave you up and the app exists in the
Task List!
Maybe you missed these lines. Probably deleted them as well with the DoModal() call!
Remember to have these lines existed in your code lines:
CwhateverDlg dlg;
m_pMainWnd = &dlg;
Coz the above 2 lines are the application object!
Just don't call the DoModal() guy! As I said when your app goes into the tray as an icon, you must have a context menu (right click) and an item to reload/show it on the screen! Or the double click procedure!
Tyr again and it should work!
Good Luck!
|
|
|
|
|
Doesnt work, but : if i change return FALSE ; to return TRUE; the first thing i get is an debug assertion error, but NOW THE PROGRAM NAME IS VISIBLE IN THE TASK LIST
if i do return FALSE; the app immediately quits after starting.
Maybe , you could please send me an example project to andreas.kuehntopf@gmx.de
BTW : Im using Visual C++ 6.0 Professional
|
|
|
|
|
Yes the retrun should be set to TRUE not FALSE as you said.
Apart from that everything else should be OK!
Would you just post your InitInstance() lines here?
If not, just copmare your code lines and it should be like this exactly:
BOOL CwhateverApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
CwhateverDlg dlg;
m_pMainWnd = &dlg;
return TRUE;
}
Remove every thing else.
|
|
|
|
|
To hide a dialog, call ShowWindow(SW_HIDE), to show it, ShowWindow(SW_SHOW)
To make it hidden on startup, call ShowWindow(SW_HIDE) in OnInitDialog.
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
Hi Christian!
This won't work coz the app class is alraedy calling the DoModal() in the InitInstance() already. Try it!
Also try my suggestion of removing the DoModal() and return TRUE in the app IninInstance() and then call the DoModal() from anywhere ealse requiring the appearnce of the dialog, it will work.
|
|
|
|
|
No it wont work
I did exacty what you said , but when trying to run i get a big bad ugly Debug Assertion Error.
The Error Message says :
Debug Assertion failed !
Program: C:\dialoghide\debug\dialoghide.exe
File: Afxwin2.inl
Line: 140
For information...[blablabla]
END RETRY IGNORE
|
|
|
|
|
Hmm, i did a debug, the error is created in the file /MFC/Winmain.cpp in line 49
nReturnCode = pThread->Run();
but i wonder what all this means
|
|
|
|
|
If you look, you'll see the error is caused by an assert that the window exists ( i.e. the window corresponding to the dialog in question. I have a program that runs in the task bar and I use the dialog as a splash screen, and hide it with a timer ( it's a dialog based app ), which is why I thought ShowWindow would work. It certainly works with a timer called after a second. I'm not sure of the way around this, but I'd suggest a Win32 program that creates the dialog manually.
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
Hmm, i did a debug, the error is created in the file /MFC/Winmain.cpp in line 49
nReturnCode = pThread->Run();
but i wonder what all this means
|
|
|
|
|
Can gimmi?
|
|
|
|