|
This is the scenario
class A {
A(int,ClassB *b);
CEvent e;
}
In the implementation file ->
A::A(int,ClassB *b) {
What do i put here?
}
|
|
|
|
|
A::A(int,ClassB *b) :
e(NULL,NULL)
{
}
The actual params to e above is wrong, pass them as you like to
have them.
/Magnus
- I don't necessarily agree with everything I say
|
|
|
|
|
Ok that solves my problem, thanks
A new learning for the day
|
|
|
|
|
thats solves my problem thanx
|
|
|
|
|
I am not absolutely sure, but I believe that in this construction call, a temporary CEvent object is created, then an equality operation is used to make the e equal to it, and then the temporary object is deleted.
On a memory-constrict system this might cause a problem. A better way when you have members in your class that are not base types (classes or similar) and need to initialize them, is to always use a pointer to the type, and reserve memory from the heap by calling new .
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
I dont think that is the case, any code in the ctor for the object would then be run twice.
Also if you had pointer members allocated in the ctor and deleted in the dtor they would be pointing to garbage.
/Magnus
- I don't necessarily agree with everything I say
|
|
|
|
|
After a quick check, the case was verified: the constructor of the member class is called only once if it is declared after the ':' on the host class's constructor.
However, I prefer pointers
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
class A {
A()
{
e = new CEvent(TRUE,TRUE,NULL,NULL);
}
CEvent *e;
}
How about this.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
that doesnt work i have tried that
|
|
|
|
|
Well i guess that is the easiest way to initialise anything. Any way just out of curiousity what is the compiler error you are getting.
did you put the following statement.
#include <afxmt.h>
<hr>"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
Yup i did that it gives some error
|
|
|
|
|
You still did not specify what error you are getting perhaps that would be more helpfull.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
I have already got the asnwer to my problem from magnus & time doesnt permit me to do ne more on it
|
|
|
|
|
Oops sorry didnt read that link... that is also a good answer.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
if you use CEvent you us it with the follwing constructor. so you could set bManualRest = TRUE. it doesnt care if you use it as member of your class...
karo
---
CEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL );
---
|
|
|
|
|
ok guys,
im trying to build a simple dialog program using sockets, im gonna translate the code from a console program.
My problem is after creating a mfc dialog from the wizard.....my toolbar for adding buttons, menus, etc...is missing !!!
maybe im dumb....but after searching for ages i cannot find it...
cheers
|
|
|
|
|
Right click on the tool bar(while editing the dialog) to get the list of toolbars there you will find the controlbar.
select it.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
perfect cheers....
well hidden little fecker
|
|
|
|
|
Dear all !
I have problems with Unicode String , please help me !
When I code as :
OPENFILENAME ofn;
ofn.lpstrFilter = L"Project Files (*.mpr)\0*.mpr\0";
......
GetOpenFileName(&ofn);
......
There is no problem.
But when I code as :
CString s = L"Project Files (*.mpr)\0*.mpr\0";
// At this moment, the Debugger
// show s as "Project Files (*.mpr)",
// not as "Project Files (*.mpr)\0*.mpr\0"
ofn.lpstrFilter = s.GetBuffer(255);
......
GetOpenFileName(&ofn);
......
Then, file dialog is showed but the combobox FileOfType not correct !
I must assign a CString variable (CString s) because I want to convert it from English to Japanese before, then I assign it to ofn.lpstrFilter !
Please help me how to control a string which contain special character such as '\0' (This means that special characters are processed like as normal characters).
Thank a lot.
Nguyen
nguyen_nd
|
|
|
|
|
Have you defined _UNICODE in ur project settings if no, then try GetOpenFileNameW(....)
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
CString can't handle embedded null's.
You'll have to use a different method, maybe just a static WCHAR array. Also I seem to rememeber someone here wrote an article about how they modified CString to work with embedded null's (and were widely criticised for it ), you could check that out.
|
|
|
|
|
The OPENFILENAME.lpstrFilter must be terminated by two null-chars. If you assign to CString a string constant which contains nulls, all characters after the first null-char are ignored. Thus the filter string in s is terminated by only one null-char.
You should append manually the remaining null-char to OPENFILENAME.lpstrFilter .
Robert-Antonio
"Science is a differerntial equation.
Religion is a boundary condition."
|
|
|
|
|
Thank everybody, I have fixed my problem !
I have re-written that code as :
// Now, szFileType = L"Text file *.txt|*.txt|"
CString openFileDialog(CString& szFileType, int language)
{
OPENFILENAME ofn;
//initialize for ofn
......
convertText(szFileType, ENGLISH, language);
int i = szFileType.GetLength()-1;
while(i>=0)
{
if (szFileType.GetAt(i)=='|')
{
szFileType.SetAt(i, '\0');
}
i--;
}
ofn.lpstrFilter = szFileType;
....
GetOpenFileName(&ofn);
return ....
}
It works very good, thank everybody very much !
D.Nguyen
nguyen_nd
|
|
|
|
|
Is your project build under _UNICODE.
"When death smiles at you, only thing you can do is smile back at it" - Russel Crowe (Gladiator)
|
|
|
|
|
My project is building under _UNICODE. But I sure that my problem still occurs as soon as I don't build under _UNICODE.
nguyen_nd
|
|
|
|