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.
Are you actually dealing with a genuine DOS environment or are you talking about a Windows console? I don't know the low level details of the Windows console, but I would not assume that they are the same.
Things that you might mean, but we can't tell which, if any:
1) Hook a DOS call. (presumably some int 21h function)
2) Replace an "external" DOS command. (provide a replacement executable earlier on the path)
3) Replace an "internal" DOS command. (I don't think this is going to happen without replacing the command interpreter, but perhaps I'm wrong.)
I guess he is not interested in that type of things. He probably wants to mess with the Windows Console.
I'd presume so as well.
It's not quite so distant for me though. I do some maintenance on an embedded system that uses a board support package that is a partial DOS work alike. I've had to reverse engineer part of its INT 21H implementation to find and patch some bugs in it.
and then assigned the output of that class to the variable(value) , but it will only work within the class. how do i go about saving a certain variable from the output of a certain class and using it for the other variables.
For example, in class A, it will extract a certain value. What i want to do is to save this value in a way that it can be called out in any other classes, either for just displaying the information or to do some calculations.