|
A small addition to Mark's post:
These allocations may be taking place in objects that are being created during 'static' initialization, which occurs before any of your code gets called. If you've got global objects (or static objects with file scope), this could be the case. Given that the leaks are at allocations 60 and 61, I would bet this is the case.
Here's an example:
class Object {
public:
Object()
{ Data = new char[128]; };
char *Data;
};
Object GlobalObject;
static Object FileObject; These two declarations will allocate a total of 256 bytes before the application code starts (and _CrtSetBreakAlloc() can be called by mainline code).
Software Zen: delete this;
|
|
|
|
|
i want to know here that when i write a function like this
<br />
int add (int a,int b)<br />
{<br />
int sum=0;<br />
<br />
sum=a+b;<br />
return sum;<br />
}<br />
<br />
i return sum but return sum to where.... that what i hope to know
thank's for all
To Be Or Not To Be
(KARFER)
|
|
|
|
|
The value of sum is returned to the caller of add().
Somewhere else in your code you'd call add...
int SumFromAdd = add(2,3);
//SumFromAdd == 5
You can also choose to igore return values...
add(2,3);
// add() has been called but the return value wasn't used
Note that there's no need to initialize sum to 0 in your function since the next line you
initialize it to the sum of the two passed integers. You could shorten your function to:
int add (int a,int b)
{
return a+b;
}
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Sometimes you need to return value so you use of this cause here is two samples:
int add (int a,int b)
{
int sum;
sum=a+b;
return sum;
}
void test()
{
int c;
c=add(2,2);
}
Cstring add ()
{
CString str;
SYSTEMTIME st;
GetLocalTime(&st);
str.Format("%d:%d:%d:",st.wHour,st.wMinute,st.wSecond);
return str;
}
void test()
{
MessageBox(add());
}
|
|
|
|
|
i want to know here that when i write a function like this
<code>
int add (int a,int b)
{
int sum=0;
sum=a+b;
return sum;
}
</code>
i return sum but return sum to where.... that what i hope to know
thank's for all
To Be Or Not To Be
(KARFER)
|
|
|
|
|
When you need to post a code you can use of
pre
and dont need to post again.;)
|
|
|
|
|
since you are returning an integer data type, you can call the function to an integer like:
int s;
s=add(2,3);
where you pass 2 and 3 as integers and get 5 as the sum which is stored in the variable s.
The add function can be called from any other function or main method.
hope that helps.
|
|
|
|
|
Hey guys, this tutorial helped me a lot http://www.codeproject.com/threads/processes.asp but it enumerates all running processes. Is there a way to only show info of a desired process, lets say notepad.exe?
Thanks
|
|
|
|
|
|
|
hey guys
this is more of a MFC-question than OpenGL I guess, that's why I put it here.
I integrated an OpenGL-control in my MFC-proggy, like from here:
(http://www.codeguru.com/cpp/g-m/opengl/article.php/c5583)
all works fine, except that
"glViewport(0, 0, width, height);"
makes no difference and I cannot get the correct aspect ratio for my OpenGL-viewport (Except my app is squared).
When the app is resized I call the Resize-function of my opengl-class
which looks like this
<br />
void COpenGL::Resize(int posx, int posy, int width, int height)<br />
{<br />
if (height==0) height=1;
}<br />
this->SetWindowPos(&CWnd::wndBottom,<br />
posx,<br />
posy,<br />
width,<br />
height,<br />
NULL);<br />
<br />
<br />
glViewport(0,0,(GLsizei)width,( GLsizei)height);
glMatrixMode(GL_PROJECTION);<br />
glLoadIdentity ();<br />
gluPerspective(45.0f,(float)width/((float)height),0.1f,100.0f);<br />
glMatrixMode(GL_MODELVIEW);<br />
<br />
}<br />
The first part resizes OpenGL-Control... works
The second part should resize the viewport (camera/aspect-ratio)... those commands work fine in a console app using only glut.
any idea?
thx in advance
zqueezy
|
|
|
|
|
so guys,
sorry for posting that early...
the answer is:
the definition has to be done before drawing not in resizing... donnu why, but that works fine...
but thanx for this cool forum
|
|
|
|
|
Glad you found the solution. Come back and visit us again.
|
|
|
|
|
I need to convert raw bitmap data into a CBitmap that can be added to a CImageList.
The raw data does not come from a file, but rather from a network transaction. As such, I cannot use LoadImage to create an HBITMAP that can be attached to CBitmap - nor do I want to save the data to file in order to do so.
Looking for any code snipet or at least a brief explanation on the procedure.
Many thanks in advance.
|
|
|
|
|
One way is to use CreateDIBSection[^]
Basic steps are:
1) Initialize a BITMAPINFO struct that describes the dimensions and format of the bitmap data
2) Call CreateDIBSection(), using a screenDC or a DC with the appropriate palette selected into
it if your pixel format is <16 bits-per-pixel.
3) The pointer returned by CreateDIBSection() (in your supplied ppvBits param) is where you copy
your pixel data to. Note that each row is aligned to a DWORD (4 bytes) so if your source data
is not DWORD aligned then do the copy appropriately to align the rows properly.
4) The HBITMAP returned by CreateDIBSection() can be used like any bitmap - selected into a DC,
added to an image list, etc.
If you are doing many operations on the same image dimensions/format, you can reuse the DIBSection
instead of creating a new one each time.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Thanks for your reply, Mark.
However, I need a little more info (I apologize for not be more specific in my first message).
The data I'm receiving over the network is the actual contents of a bitmap file, so I'm assuming that the BITMAPFILEHEADER, BITMAPINFO, BITMAPINFOHEADER structures, as well as the bits and palette data, are already set up. I know that this received data is valid because I've been able to successfully save it to disk and load it up in an image editor, like Paint.
I've been experimenting with the following code (minus error handling et al), but so far all I get is a black box whenever I draw the bitmap.
BOOL LoadBitmap(PBYTE pbData, // pointer to data received over network
CBitmap &bmp) // destination CBitmap object.
{
PBITMAPFILEHEADER pBmpFileHdr = (PBITMAPFILEHEADER)pbData;
PBITMAPINFO pBmpInfo = (PBITMAPINFO)(pbData + sizeof(BITMAPFILEHEADER));
PBITMAPINFOHEADER pBmpInfoHdr = &pBmpInfo->bmiHeader;
PVOID pvBits = pbData + pBmpFileHdr->bfOffBits;
HDC hDC = CreateCompatibleDC(NULL);
HBITMAP hBitmap = CreateDIBitmap(hDC, pBmpInfoHdr, CBM_INIT, pvBits, pBmpInfo, DIB_RGB_COLORS);
DeleteDC(hDC);
return bmp.Attach(hBitmap);
}
Note that everything 'seems' to work (ie. no errors returned and structures contain valid data), but it appears that 'bmp' is not initialized properly.
|
|
|
|
|
fixitnow wrote: but it appears that 'bmp' is not initialized properly.
How so?
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Sorry for delay - had other bugs to fix.
It appears that I'm missing color information: when I draw the bitmap it's black and white, and in some cases it's all black.
The confusing thing for me is that it draws fine if I save the data to disk and then load it with LoadImage.
|
|
|
|
|
Since you are using CreateDIBitmap(), the DC you use is going to determine the format of the
destination bitmap.
By default a DC has a monochrome bitmap selected into it, so that's the format you're going to
get.
You have (at least) two alternatives to fix this:
1) Create a DDB bitmap (HBITMAP) of the desired destination bitmap format and select it into the
DC before calling CreateDIBitmap().
2) Use CreatDIBSection section to create the destination bitmap and copy the source pixel bits
to the DIBSection's DIB bits.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Hi I m using bloodshed DevC++ 4.9.9.2 for win32 programming I am unable to use the code completion feature after enabling "class browser", "code completion" and "code completion cache", when i hit a dot after any structure variable (say, WNDCLASSEX wincl), My mouse cursor just blink for a second a waiting busy cursor appears and goes off, even i tried hitting Ctrl+Spacebar same thing appears mouse cursor blinks and then nothing happens, Plz help.
Thanks in Advance,
Sumit
|
|
|
|
|
SumitMandal wrote: I m using bloodshed DevC++ 4.9.9.2
There are probably not too many people here on CP using that development environment. You would have better luck getting an answer to find a DevC++ forum.
|
|
|
|
|
Hi
In that article (http://www.codeproject.com/dialog/messagehandling.asp) it writes:
In fact, all the standard controls are simply windows with Message handlers. Take a Button for example. When it gets a WM_PAINT message it will draw the button. When you Left-click the button, it gets a WM_LBUTTONDOWN message, and it draws the pressed-button. When you let go of the mouse button it receives a WM_LBUTTONUP message, and respectively draws the button.
When user click button windows put message in programs message queue.
Does windows also put WM_Paint message to controls queue?
I dont understand here. There are 2 messages, one of the buttondown, the other paint. buttondown sends to my program but how does window achieve repainting?
Is there one more buttondown message handler in button control? Does windows put buttondown both my program and control?
Can you please explain here.
Thanks
|
|
|
|
|
Indeed, if windows needs to repaint an object the WM_PAINT is sent to the control.
A WM_LBUTTONDOWN is for a click that a control receives... (=> user clicks on control, e.g)
I guess that WM_PAINT is sent, too, because the button might get a little indentet, so it needs to be repaint
|
|
|
|
|
This is correct for some standard window classes. But if i am creating a owner draw control like that, it depends upon me , what to do , whether paint or not. So Normally we need to paint on mouse messages to give a feeling to the user...
If u can Dream... U can do it
|
|
|
|
|
Windows simply puts the WM_LBUTTONDOWN in the queue, it is up to the window to decide how it responds, different windows will respond differently.
A button probably changes its internal state to 'pressed' and calls Invalidate() which is its way of asking Windows for a WM_PAINT message. It will also fire off a notification message to its parent to let it know that it has been pressed. In response to the WM_PAINT message it will draw its 'pressed' state.
A Static text control may ignore mouse messages. You could modify this behaviour by adding a WM_LBUTTONDOWN handler, you may decide to change what is displayed so you could modify some saved data and call Invalidate(), and when the WM_PAINT message arrives draw the new data. Doing this you could make it behave like a button for example (you would also have to handle the WM_LBUTTONUP message).
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|