|
Could somebody explain how this works and what it does. I know it can be used to declare a base class, but I have now come across it in another location and I can't work out what it does.
class Error<br />
{<br />
public:<br />
Error(const int nErrCode, char* szErrMess);<br />
Error(const Error& e);<br />
private:<br />
int mnErrCode;<br />
char* mpszErrMess;<br />
};<br />
<br />
Error::Error(const int nErrCode,char* szErrMess) : mnErrCode(nErrCode)<br />
{<br />
}<br />
<br />
Error::Error(const Error& e) : mnErrCode(e.mnErrCode)<br />
{<br />
}
|
|
|
|
|
Hi,
I believe you mean the two following occurances
waldermort wrote: Error::Error(const int nErrCode,char* szErrMess) : mnErrCode(nErrCode)
...
Error::Error(const Error& e) : mnErrCode(e.mnErrCode)
When using the colon ':' after a constructor you open an initialisation list.
This means that member like mnErrCode are initialised with the given error code even before you enter the scope of the constructor.
codito ergo sum
|
|
|
|
|
So it's basically the same as placing mnErrCode = nErrCode; inside the c'tor? I have to ask, what is the point of doing this?
|
|
|
|
|
In this case, probably just convenience. But lets say you have a member that is a class object that doesn't have a default constructor.
|
|
|
|
|
supose the following situation
class A
{
public:
A(int i)
{
_i = i;
}
int _i;
};
class B
{
public:
B() {}
A _a;
};
class C
{
public:
C() : _a(1) {}
A _a;
};
Now when maken an object of the type C the default constructor (of C) will initialize _a and
calling the correct constructor of the member _a
You might want to check the following http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6[^]
codito ergo sum
|
|
|
|
|
Ahhh, I understand perfectly now. Thankyou for the explanation.
Infact I now remember seeing and using this before, when using STL containers within a class, I remember first having to initialize them like this before being able to use them.
-- modified at 20:20 Friday 25th August, 2006
|
|
|
|
|
Hello All,
Can someone recommend a great skinning software that is stable, compatible with VC++ and MFC, works, and has a good collection of stock skins? I need it for a project and I am having a difficult time finding a good skinning package.
Any help or direction you provide would be greatly appreciated.
Thanks,
BP
|
|
|
|
|
|
I'm using SHFileOperation to copy some files. If I set pFrom to a string with multiple, fully quailified filenames, seperated by a NULL with an additional NULL character at the end and pTo to a string with a fully qualified directory with the extra NULL character, it works fine.
If my pFrom is only 1 fully quailified filename with the extra NULL character at the end, SHFileOperation instead makes a file with the pTo directory name of the size of the source file.
Example...
pFrom = c:\pictures\pic1.jpg, c:\pictures\pic2.jpg, etc...
pTo = d:\jpg
When I check the drive, I'll have d:\jpg folder containing all my files pic1.jpg, pic2.jpg, etc.
If I'm only copying 1 file,
pFrom = c:\pictures\pic1.jpg
pTo = d:\jpg
This time, I'll check the drive and I'll have file called jpg in d:\ with the size of pic1.jpg. I'm pulling my hair out trying to figure out whats going on. I've checked and I have the buffers set up correctly with additional NULLs at the ends etc. Anyone know what the problem is?
Thanks,
Steve
|
|
|
|
|
I don't think much of the title to your post!
|
|
|
|
|
Sorry, I was pretty frustrated when I wrote it.
|
|
|
|
|
Have you tried sticking a '\' at the back of pTo? eg. pTo = d:\jpg\.
|
|
|
|
|
Thanks. I tried that and it and with the extra "\", it's not a vailid file name and generates an error.
|
|
|
|
|
Then I guess that your only alternative is to set pTo to d:\jpg\pic1.jpg
|
|
|
|
|
I need help. How can I use Visual C++ to copy a bitmap to the clipboard using OLE?
|
|
|
|
|
|
I tried the following:
BOOL CMyFormView::PutDataToClipboard(CBitmap *pBmp)
{
COleDataSource *pods = new COleDataSource;;
HBITMAP hBmp = (HBITMAP) *pBmp;
int i = sizeof(*pBmp);
HANDLE hData = ::GlobalAlloc(GMEM_FIXED, sizeof(*pBmp));
CBitmap* pData = (CBitmap*) ::GlobalLock (hData);
pData = pBmp;
BOOL l = ::GlobalUnlock(hData);
STGMEDIUM stg;
stg.tymed = TYMED_GDI;
stg.hBitmap = hBmp;
stg.pUnkForRelease = NULL;
// Place the data object on the OLE clipboard.
CFormApp* ab = (CFormApp*)AfxGetApp();
pods->CacheData(CF_BITMAP, &stg);
pods->SetClipboard();
//ab->pods->CacheData (CF_BITMAP, &stg);
//ab->pods->SetClipboard ();
delete pods;
return TRUE;
}
I'm unable to paste the bitmap in mspaint (and other places). Any ideas?
-- modified at 15:20 Tuesday 29th August, 2006
|
|
|
|
|
Hi everybdody.
I got a simple question.
How could I load some html file that I already have as resource, into an CHtmlView???
My initial idea was load the file using the Navigate2 function from OnInitialUpdate() but I can't see how.
Thank you for your time.
Demian.
"I have always wished that my computer would be as easy to use as my
telephone. My wish has come true. I no longer know how to use my telephone."
-Bjarne Stroustrup, computer science professor, designer of C++
programming language (1950- )
|
|
|
|
|
Try looking into the res: protocol[^]. It's a way of specifying a URL that refers to a resource in a DLL or EXE.
Software Zen: delete this;
|
|
|
|
|
I'm running into a problem that seems like it must be solvable, but I can't find any documentation that explains it.
The basics: I have a custom control that uses a bitmap for a background (either created programmatically, or by loading a resource or file). This is done in an off-screen memory DC to avoid flickering. After the bitmap is rendered, I render some text onto it using DrawText() API. When it's done, the whole thing is blitted back onto the screen.
The problem: When ClearType is enabled, the text looks ugly, almost as if every letter has a black outline around it. I'm guessing this is the sub-pixel antialiasing stuff, which has somehow turned black when I blit from the memory DC to the screen.
Question: how can I allow and use ClearType in my control and still have it look okay? Apps like IE and Firefox handle ClearType correctly, and I'm pretty sure they're using some kind of off-screen double-buffering scheme for drawing, so it seems to me there should be a way to do it. But I'm darned if I can figure out how.
Thanks in advance for any help,
Warner Young
|
|
|
|
|
I had a similar problem the other day, i found the cause was when drawing of screen, I didn't create a compatible bitmap with the main DC. Have a look at how you are implememnting your double buffer, the problem may be there.
|
|
|
|
|
Is the bitmap that is selected in the memory dc a bitmap that is compatible with the screen? Or did you just select the bitmap that you created/loaded into the memory dc and try to draw the text that way? Some sample code would help since I don't have any problem drawing cleartype enabled text on my doublebuffered controls.
|
|
|
|
|
I am inferring some things from my learning experience with VC++. I'd like to check if I am correct.
1. Each file is compiled separately and independently. This means each .ccp and .h file is compiled as a stand alone unit.
2. If #1 is correct, then each file must contain all the class and function declarations to which any code in that file will refer.
3. The same header file with class declarations can be #included in several other files. In other words, trans.h can be included in both abc.ccp and xyz.cpp.
Is this correct? Thanks.
|
|
|
|
|
Oliver123 wrote: 1. Each file is compiled separately and independently. This means each .ccp and .h file is compiled as a stand alone unit.
*.cpp files are compiled, not *.h files. CPP files are where the implementation for classes, functions, etc are placed. H files are where they are defined. This allows other modules (classes, libraries, etc) to see the definition of a function or class without having to know how everything is implemented during the compilation.
Oliver123 wrote: 2. If #1 is correct, then each file must contain all the class and function declarations to which any code in that file will refer.
You can't use a function/class/variable/etc unless you know how it is defined.
Oliver123 wrote: 3. The same header file with class declarations can be #included in several other files. In other words, trans.h can be included in both abc.ccp and xyz.cpp.
This is correct. Though usually you place #pragma once or #ifdef/#define statements around the header file content to prevent a file from being included multiple times.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
Oliver123 wrote: his means each .ccp and .h file is compiled as a stand alone unit.
it helps to think of #include "foo.h" as doing exactly what "include" implies: the preprocessor reads the contents of foo.h and, in effect, sticks that in the place of the #include line. the compiler doesn't really look at foo.h directly.
and, you can #include anything.
|
|
|
|