Have a look at this: Overlapping Controls Are Not Supported by Windows[^] (means siblings). If you want overlapping controls in a dialog use a child-parent-hierarchy, for example use SetParent()[^]. Another alternative would be modifying the static text control you mentioned, make it a custom control that draws a picture in the background.
When I first heard about Embedded360 and their Fast Embedded Model, I didn’t give much importance to it. But it’s when I worked with them and got to know their work process that I truly understood their approach. Their Agile methodologies combined with technical expertise in the embedded space have helped them in developing flexible, easily accessible, and futuristic solutions that enhance quality and maximize profits. For more details click here: http://www.embedded360.com/[^]
For that purpose, you can either rely on static linking or dynamic linking.
1. Static Linking
a. Add the lib corresponding to the DLL(DLL that is to be called) in Project Settings->Link->Input->Object/library modules.
b. Add the Include file pf the DLL into your project dsp.
c. Call the function after including the header.
2. Dynamic linking- Usually done in case, where you have Def([^]) files, which is mentioned in the above comment by rajesh.
We have SDI application. In which we are opening some dialogs. Once application is up these dialogs can be open and close as many times as possible. If I am opening dialog first time, minimize application(not dialog, i mean whole application) and then maximize application, dialog is also displayed in previous condition. But if i close and open dialog again, on minimize and maximize application make dialog disappear, I have to open dialog explicitly. How can I stop this behavior?
I tried to explain situation as much as possible. If anyone have doubt fire your question.
First thing, I am not recreating dialog every time. I mean Once it is created i am not destroying its handle/object till application is down. So setting of parent is done once. I think this will be ans or your second que also. And ya I am using MFC.
Well, that sounds right. So you will be intercepting user request to close the dialog and hiding it instead.
Something has to have changed in the state of the dialog or object, but I'm afraid I'm not going to come up with it.
My remaining thought is to monitor the windows messages being sent to the dialog in the 2 situations. A difference would obviously be a clue. Failing that, it might suggest a good point to put in a breakpoint.
No I am not stoping dialog from being close check this part;
void CHWSimulatorDlg::OnSysCommand(UINT nID, LPARAM lParam)
//Event for maximize HWsimulator window
bMaximizeFlag = true; //Seting flag
//Event for restore or close window
bMaximizeFlag = false; //Reset the flag
I tried to debug this part, I am not getting any message in this function when I am minimizing whole application.
And I havnt override OnClose function for this dialog.
I don't think that the code you posted is the problem. It also doesn't seem that useful to me.
Now chevu wrote:
No I am not stoping dialog from being close
Combined with other things that you have said, this suggests to me that we may actually be getting somewhere.
First, I'll explicitly state my understanding that we are discussing modeless dialog boxes with associated classes derived from CDialog.
Now let me try to quickly summarize lots of stuff. Some of this may seem to simple to mention. I'm doing it anyway because I suspect that you are missing part of this, but I don't know what part.
In working with modeless dialog boxes in MFC there are 2 things around that one has to worry about. One is a C++ object instantiated from a class derived from CDialog. This is normally dynamically allocated so that its lifetime can be properly managed. The other is the windows object (not a C++ object) that Windows maintains and deals with that a windows handle is connected to. They are associated, but they are somewhat independent things.
A class for a modeless dialog overrides OnOK and OnCancel and does NOT call the default versions. The default ones in CDialog call EndDialog() which is intended for use with modal, not modeless dialogs. (I'm not sure of all the implications of calling it for a modeless dialog, but I suspect this may be a part of your situation.) These overrides might call DestroyWindow() to terminate the dialog and kill the windows object. When it is desired that the dynamically allocated C++ object self-destructs when the dialog is closed, PostNcDestroy() is also overriden.
Typically, one constructs the C++ object and calls Create() which creates and associates the windows object. Later, the user exits the dialog in some way. The programmer has provided code for this that includes a call to DestroyWindow(). Then some programmer provided mechanism deletes the C++ object.
Now you want to do things differently. Once things are created, you want to keep things around (though not necessarily displayed) until the program exits. So when the user "closes" the dialog instead of destroying the window object (via DestroyWindow) and deleting the C++ object, you are writing code to hide the window and keep track that you have done this. Then when you want to display the dialog again you would just show the window.
It now sounds like this isn't what you are actually doing. Perhaps you are letting EndDialog() be called. I don't know just what state that would leave the window object in.
Hopefully this gives you some direction. Now I have to get to bed before I finish falling asleep.