|
I'm sorry that this is a realy basic question -
About the vector which is a member variable of the class - when is its Dtor called? My guess is when the object "dies" but i'm still not sure.
Is it normal to have a constructor (which doesn't allocate any memory on the heap) and no destructor in a class?
Thanks for your patience .
-----------------------
Go USA Go
|
|
|
|
|
About the vector which is a member variable of the class - when is its Dtor called? My guess is when the object "dies" but i'm still not sure.
vector dtor is called as part of your class dtor (the compiler automatically handles this). So, yes, the vector is destroyed when the owner object dies.
Is it normal to have a constructor (which doesn't allocate any memory on the heap) and no destructor in a class?
It is pefectly normal, specially if all members take care of their own cleanup. Remember that your class never lacks a dtor: if you don't provide one the compiler generates it automatically, and will call appropriate dtors for member objects and base classes.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Makover wrote:
when is its Dtor called?
when the containing object dies. if CFoo has a vector, the vector's d'tor is called as part of the CFoo d'tor.
Makover wrote:
Is it normal to have a constructor (which doesn't allocate any memory on the heap) and no destructor in a class?
constructors and destructors are totally optional. there's nothing wrong or unusual to not have one or the other (or both) in a class. if your class isn't responsible for any heap-allocated memory then you probably don't need a d'tor.
one exception to this is when you have a class where the d'tor performs some kind of useful side-effect: like CWaitCursor which show the hourglass cursor in the constructor then shows the normal cursor in the destructor.
-c
Image tools: ThumbNailer, Bobber, TIFFAssembler
|
|
|
|
|
Great! thanks, I finally got it. Thanks Joaquín and Chris.
-----------------------
Go USA Go
|
|
|
|
|
Hi,
My problem :
I want to call a function from a DLL and isn't working
the function is :
// this code is from dll ......
DWORD test(DWORD x)
{
if (x==1)
MessageBox(NULL, "work DLL", "working", MB_OK);
return 0;
}
// ............
in my program I wrote :
typedef DWORD (*LPtest)(DWORD);
LPtest test = NULL;
hDll = LoadLibrary("test.dll");
test = (LPtest)GetProcAddress(hDll,"test");
DWORD a = GetLastError();
hDll is not NULL .... and ....
a is 127 ... "The specified procedure could not be found."
and if I try something like
test(1); the program gets an ACCESS VIOLATION !
please help !!!
|
|
|
|
|
Does your DLL compile correctly? There is no export code.
extern "C" __declspec(dllexport) DWORD Test(DWORD)
Kuphryn
|
|
|
|
|
It sound likes that you does not export the function "DWORD test(DWORD x)",
you can get your current exports table via typing "dumpbin /exports test.dll" in console. In normally, VC6 exports your test function in this form:
_test@2
For telling the compiler we need to export this function in standard mode, save follow lines in notepad in a .def file and then add it to your dll project:
EXPORTS
test
At the end, change declares line "DWORD test(DWORD x)" to "__declspec(dllexport) DWORD test(DWORD x)" for avoid the warning(dllexport assumed).
Good Luck.
|
|
|
|
|
thank you very much !
I wrote a .def file, linked and it worked !!!!
thank you !
|
|
|
|
|
hii..
I created the window,like this:
class CNewWnd : public CWnd
{
public:
CNewWnd(void);
~CNewWnd(void);
};
CNewWnd::CNewWnd(void)
{
this->Create("CNewWnd","New Window",WS_CHILD|WS_OVERLAPPEDWINDOW|WS_VISIBLE,CRect(10,10,200,200),this->GetParent(),NULL);
}
And I want to show this window when pressed the button.I have wanted to do this,like this but this didnt worked .
CNewWnd m_NewWnd;
m_NewWnd.ShowWindow(SW_NORMAL);
I am novice.how can I do this?
|
|
|
|
|
But from where may I ask "this->GetParent()" is going to GetParent(), if you call it from the constructor?
CNewWnd::CNewWnd(void)
{
this->Create("CNewWnd","New Window",WS_CHILD|WS_OVERLAPPEDWINDOW|WS_VISIBLE,CRect(10,10,200,200),this->GetParent(),NULL);
}
|
|
|
|
|
Brian has a valid point.
Another possible problem may be the fact that you're declaring an instance of CNewWnd in your button-click's handler. m_NewWnd should be a member of the parent class.
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
thanks for your reply.
please,can you show me how to do this?.
I found an example in MSDN.like this:
void CMyDlg::OnCreateStatic()
{
CWnd* pWnd = new CWnd;
pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE,
CRect(0, 0, 20, 20), this, 1234);
}
but I cant interfere to window.
|
|
|
|
|
OK, this sounds stupid , but I'll ask it 'cos I need to know:
After choosing a Dialog based app in MFC AppWizard, I get the dialog but not the toolbar that is used to place the controls (buttons, combo boxes, etc). How do I make it visible? I looked in the menus if I could bring it up, but I couldn't see it. I'm using VS 6.
4 months of hard-coding everything in MFC has made me a bozo. [embarassed look]
Please help.
Vikram.
"Do not give redundant error messages again and again." - A classmate of mine, while giving a class talk on error detection in compiler design.
|
|
|
|
|
You can get back the Control Box from Through
Menu Tools ->Customize->ToolBars( From the Tab Control)->Controls( Check this)
Jibesh...
|
|
|
|
|
Hi, Jibesh!
Thanx for that tip- it worked. I feel so *dumb* , but hey, MS shoulda put it in a better place! Like I said, 4 months of hard coding in MFC didn't help me.
Thanx,
Vikram.
"Do not give redundant error messages again and again." - A classmate of mine, while giving a class talk on error detection in compiler design.
|
|
|
|
|
Trying to get into OpenGL programming. I have no prior
experience with it. Looking for suggestions on best
ways to get started.
Also looking for suggestions on where to obtain the
necessary libraries, etc...
Consider me and OpenGL newbie, what can I say?
Any help of any kind would be greatly appreciated.
Thanks.
|
|
|
|
|
http://nehe.gamedev.net/
Visual Studio contains all required OpenGL libraries and headers.
|
|
|
|
|
|
|
I use VC6 with non-MFC
In MyApp, I use API functions about ODBC to process a database file (MDB) such as: SELECT, INSERT, UPDATE, DELETE, CREATE_TABLE
Sometime, when I run (debug) App, a Error MessageBox occur to inform about a error, which relate to ODBC (such as: error in ODBCJT32.DLL ....) and MyApp terminate
With VB, I only put a line 'On Error Resume Next' but with VC, I don't know how to handle this error problem.
Can you show me a way to handle error, I mean: when App encounter a error then it inform to user by Error MessageBox and run continue...
and..... how can i find what function cause error (such as: error in line 356, by SQLExecDirect() function)
Thank you so much!
Because...... I use SystemParametersInfo() to setting some features of Windows(XPpro) and when MyApp encounter a Error, it's forced to terminate so that I can't recover original values back to System (I recover SysParams when DestroyWindow) >> very serious problem >> All windows in OS are affected!!!!!!!............
Skid Row never die
|
|
|
|
|
VC++ 6, SDI project
I've had a user recently encounter a problem using the "Number of Copies" feature in the Print dialog box.
When he sets the value to print multiple copies, he says it works fine with one printer, yet on another (Canon BJC 240) it only prints one copy. I made a simple test program that did nothing more than print a single line on a page and had him try it out. The results were the same.
Someone in the newsgroups suggested a bad printer driver might be the cause. Strange thing is, the user says the Canon's multiple copies feature works fine in other programs. (i.e. Word)
Any ideas?
Jack
|
|
|
|
|
You may send me the simple test program so I could take a look on it (mail@BartoszBien.com). I developed a custom print dialog some time ago, so DEVMODEs, CPrintInfos and such stuff are quite familiar to me.
Regards,
BB
|
|
|
|
|
Please help me with this
I have created SDI application in MFC.
Main View is RichEditView.
I have added menu item FORMAT as ID_FORMAT.
I have created CFontFormat class which is delivered from CFontDialog as base class.
In class view (ctrl+w) i have added "COMMAND" to ID_FORMAT, then edit code:
//CODE HERE
{
CFontFormat aCD;
aCD.DoModal();
}
//ENDS
In source file i have added #include "FontFormat.h" then execute.
OK, great programm is executed, i have rich edit text view, i can type in (but always in that ugly bold default font). I select FORMAT from the menu, and Font selection dialog appears. I select font and then----nothing, font is the same as it would be if i just created sdi application with richeditview.
I am begginer (stupid female ), i am willing to learn, but i need good soul who can reply and step-by-step point me to somwhere.
Thanx in advance,
*Marriana*
|
|
|
|
|
Anonymous wrote:
I am begginer (stupid female)
Marriana, don't belittle yourself for being a beginner. We are all beginners at one time or another.
It sounds like you have the rich edit control working, and the font dialog working. What you need to do is connect the two. The basic idea is that, where you invoke the font dialog, retrieve the values that the user selected from the font dialog. CFontDialog includes methods for each value the user can select. These values can then be applied to the current selection in the rich edit control. The rich edit control has methods for setting the 'character format' (which the font is part of).
Look further in the MSDN (or at msdn.microsoft.com[^]) for CFontDialog and CRichEditCtrl .
Good luck.
Software Zen: delete this;
|
|
|
|
|
how can i disable a an active x's right click event..?????
[.1]
|
|
|
|