|
No I am not stoping dialog from being close check this part;
void CHWSimulatorDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
switch(nID)
{
case SC_MAXIMIZE:
ShowWindow(SW_SHOWMAXIMIZED);
bMaximizeFlag = true;
break;
case SC_RESTORE:
case SC_CLOSE:
bMaximizeFlag = false;
CDialog::OnSysCommand(nID, lParam);
break;
default:
CDialog::OnSysCommand(nID, lParam);
break;
}
}
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.
|
|
|
|
|
Hi
I want to save class instance addresses to a vector. How can I get address of a class instance?
class A {}
A* pA = new A;
How can I get "pA" address value and assigned to a variable?
Thanks,
|
|
|
|
|
|
Thanks,
So I can implement like:
std::vector<void*> classAddress;
classAddress.pushback(&pA);
|
|
|
|
|
No, I don't think so - in that code pA is the instance pointer. &pA is the address of the pointer pA that holds the instance address, and is temporary (unless it's a global).
Instead, I would suggest:
class A { ... };
A* pA = new A;
std::vector<void*> classAddress;
classAddress.push_back(pA);
Why std::vector<void*> instead of std::vector<A*> though? Are you going to store pointers to different types there?
|
|
|
|
|
Thank you for your reply.
I need to save all kinds of classes. Not only class A.
|
|
|
|
|
In this approach, you will have problems knowing what each item is or being able to do anything with them.
If these objects are all related by all being the same sort of thing and based on a common base class, you could use a vector of pointers to the common base class.
If these objects are not related, you might think about another organization that will reflect what they are.
As a side note, don't forget about deallocating whatever you have allocated.
|
|
|
|
|
Avi Berger wrote: n this approach, you will have problems knowing what each item is or being able to do anything with them.
I don't do anything. I just need the address.
Avi Berger wrote: f these objects are all related by all being the same sort of thing and based on a common base class, you could use a vector of pointers to the common base class.
Because I need to do anything with the address, I think there is no need for a common base class.
Thanks
|
|
|
|
|
First, you need a semi-colon at the end of your class definition.
class A {};
Next,
transoft wrote: A* pA = new A;
pA is a variable that you have assigned the address of a dynamically created instance of A. So you have already accomplished what you were asking about.
So from your other message it would be:
std::vector<void*> classAddress;
classAddress.pushback(pA);
However, this will raise peoples hackles as you generally don't want to play with void *'s if yo don't have to.
Perhaps you might ask about what it is you hope to achieve.
|
|
|
|
|
Good afternoon
Please I want to subclassing dos commands but I don,t know how can I proceed.
|
|
|
|
|
aurelcly wrote: subclassing dos commands
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
huh?
This signature was proudly tested on animals.
|
|
|
|
|
aurelcly wrote: I want to subclassing dos commands
Not possible I'm afraid.
MVP 2010 - are they mad?
|
|
|
|
|
Try to explain what you mean, as you can see we don't quite get what you mean. Do you maybe mean you want to replace dos commands with your own versions, like, writing your own terminal or such?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Sometimes you just have to hate coding to do it well. <
|
|
|
|
|
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.)
|
|
|
|
|
Right! INT 21H and such. Sounds quite distant.
I guess he is not interested in that type of things. He probably wants to mess with the Windows Console.
|
|
|
|
|
loyal ginger wrote: 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.
|
|
|
|
|
Hey guys im facing a problem in declaring variables. i have a few classes like the one below...
[CODE]#ifndef _FINANCE_H
#define _FINANCE_H
#include <string>
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std ;
class readStraitsTimesIndex
{
public:
void StraitsTimesIndex(fstream&) ;
private:
};
class readDow
{
public:
void Dow(fstream&) ;
private:
};
[/CODE]
what i am trying to do is to use a value which is being the output of one of the class class and to be displayed into the other class. I tried using an object member like the one below ,
[CODE]class readStraitsTimesIndex
{
public:
void StraitsTimesIndex(fstream&) ;
String value ;
private:
};[/CODE]
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.
|
|
|
|
|
not certain I understand completely your problem, wchich sounds a lot like a very basic problem.
something like this? :
class A
{
private:
int m_a;
public:
int f(){return m_a;};
};
class B
{
private:
int m_b;
void f()
{
A a;
m_b = a.f();
};
};
or something like this?:
class A
{
private:
int m_a;
public:
int GetA(){return m_a;};
};
class B
{
private:
int m_b;
public:
void SetB( int b){ m_b = b;};
};
void main()
{
A a;
B b;
b.SetB( a.GetA() );
}
depending on the relation between A and B, this could be done in a multitude of different ways.
This signature was proudly tested on animals.
|
|
|
|
|
Sorry , let me try to make it clear.
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.
|
|
|
|
|
You need to add some extra methods in your class to return the data in whatever way the caller needs. Try rereading the C++ guide(s) or books on classes and how to use them.
MVP 2010 - are they mad?
|
|
|
|
|
What should i be looking for exactly when i read the book?
|
|
|
|
|
gregarion wrote: What should i be looking for exactly when i read the book?
The fact that you need to ask this question suggests you need to look at everything. If you do not understand how classes hold their data and how they return it to other objects/callers then you are missing the fundamentals of object oriented programming; a significant hole in your knowledge.
MVP 2010 - are they mad?
|
|
|
|
|
Richard MacCutchan wrote: The fact that you need to ask this question suggests you need to look at everything. If you do not understand how classes hold their data and how they return it to other objects/callers then you are missing the fundamentals of object oriented programming; a significant hole in your knowledge.
I vote a 10 for this one!
|
|
|
|