|
João Paulo Figueira wrote:
Are you trying to call the constructor here?
No, it's not my code.
It's a sample given by Microsoft, and this example should illustrate the error, which I have no idea what it really is.
Anyway, ignore the example if you wish. My question was actually- what this error means as I get this error on a totally different case.
Elad.
|
|
|
|
|
I'm searching for a handle leak that's driving me crazy...
http://www.codeproject.com/useritems/HTMLCtrlSample.asp[^]
And meanwhile the customer could work with the new program version...
So I would like to know how many handles leaked can a Win2k Professional OS support.
Any idea?
|
|
|
|
|
We recently had a resource leak that took forever to track down. I hav't looked at the article you posted a link for, but our problem turned out to be a call to SHGetFileInfo() which was returning a handle to an icon that we were responsible for releasing, so I would suggest checking any calls in SH... function to make sure that your releasing any resources it my be allocating for you.
Roger Allen
Sonork 100.10016
Were you different as a kid? Did you ever say "Ooohhh, shiny red" even once? - Paul Watson 11-February-2003
|
|
|
|
|
Let me give you a hint:
I've looked at your article http://www.codeproject.com/useritems/HTMLCtrlSample.asp[^], and it leaks a lot more than just three handles(1 sem + 2cs). It also causes browser control to leak 3 pretty large memory objects...
|
|
|
|
|
OK, how did you've seen that?
and do you know how can I avoid it?
Thank you in advance.
|
|
|
|
|
If I'd know how to do it (how to avoid to leak those things the semaphore and the critical sections) it would be great, I need to finish a program that depends on this.
Sometimes I feel nude in front of the problems, this is what happens when one has no time to learn and need to give always results as fast as it can be... It would be perfect if you'd tell me how to solve the problem or how to detect it, in order to learn a little bit more and to program better.
Thanks a lot.
|
|
|
|
|
I am on deadline. ( My house to be re-plumb in few days. )
Anyway, you are leaking what it looks like HTMLBody?
Brian
|
|
|
|
|
This may have something to do with the way you load document,
you really should wait for OnDocumentComplete before loading different content....
Brian
|
|
|
|
|
Thank you very much, I'll try it...
Good luck with plumbing!
|
|
|
|
|
I've TRACEd the function calls and using the virtual functions in CHTMLView (OnBeforeNavigate...) I've seen that always the order in which the code is called is the next one:
OnbeforeNavigate2
OnDownloadBegin
OndownloadComplete
OnNavigateComplete
This code is only called when I load the first page using Navigate2/Navigate but when I write directly into that page that doesn't happens.
---------------------------
The most strange thing is that if I place an invisible CHTMLCtrl inside the main dialog (it is created at start and destroyed at finish) the handle leaking is not happening...
Now I free the document at the end: in the OnDestroy call, now I have placed this->GetHTMLDocument()->Release(); .
---------------------------
How can I leak the body if I don't work with it? (it should be an internal CHTMLView thing, shouldn't it?)
---------------------------
How did you seen that I was leaking memory? (I'd like to know it in order to be able to search for a solution).
I've applied the modification that Microsoft tells to apply in an article pointed by Art Friesz, and I think the final result should be better, but I'd like to be able to scan for those leaks without help, could you tell me how did you noticed them, and how did you know what they are? (Semaphore, cs...)
Thaks a lot in advance.
|
|
|
|
|
Hi Joan,
Don't know if I can help you but your problem reminds me of something I went through with the CHtmlView class about 3 years ago concerning a documented resource leak. I am not sure if it still applies today or not.
Art
Here is the extracted Dr GUI problem:
/////////////////////////////
Start MSDN documentation:
/////////////////////////////
Extracted from Dr. GUI #49
Dear Dr. GUI:
Our app makes use of the Internet Explorer WebBrowser control and MFC's CHtmlView to add custom status information and user-defined views. The app is a process monitoring program that runs scripts that we call recipes. If one of these recipes continually chains to other recipes then we cannot run for more than a few hours before the system becomes unstable because of some kind of resource problem.
I have written a small MFC AppWizard app (attached) that uses the CHtmlView and, after a short time, closes the currently active document and creates a new one. If I run this app overnight then the system becomes pretty unstable and this and other apps start doing weird things!
I have run the app and used the Windows NT performance monitor to look at what's leaking and it seems that the major problem is that the Pool Paged Bytes are getting eaten at quite a rate. Am I doing something wrong or is this a bug with Internet Explorer? If so, how do I report it and hopefully get it fixed?
My system is running NT4 SP5 with IE5 and has 128MB RAM. We also see the problem on Windows 98 but haven't tested with Windows 95.
Thanks in advance.
Matt Stephens
Dr. GUI replies:
Thanks, but I'll pass on that cake for now. I don't think that I can take it, 'cause it took so long to bake it. But soon we'll get your recipes running again. (But it won't be as nice a solution as the good doctor would like.)
Actually, according to our omniscient support engineers here in MacArthur Park, the problem you describe is indeed a known bug in Internet Explorer. We're working on fixing it in a future version of Microsoft Internet Explorer or an Internet Explorer service pack. For the time being, there is not much of a workaround. The best thing to do is to shut down your application periodically to free those resources. Dr. GUI is sorry he doesn't have better news.
Take a look at this Knowledge Base article for some more information:
Q241750: BUG: CHtmlView Leaks Memory by Not Releasing BSTRs in Several Methods
////////////////
End MSDN Documentation
////////////////
|
|
|
|
|
I think you've just hit its head...
I'll try it, and if it works I will modify the article, thanks a lot, I'm really getting mad with that problem...
Thank you very much.
|
|
|
|
|
Hello,
I've made the changes that are in the article (thanks for the article title),
but even after that I still have the same problems, and I've noticed something strange:
If I place a invisible HTMLCtrl inside the main dialog the handle leaks are not produced...
could you tell me why this is happening?
Thank you in advance.
|
|
|
|
|
Hi world...
I'm using DirectDraw with GDI to show image from a frame grabber inside a window (not fullscreen mode). I work with a DMA from the frame grabber to a video surface memory (with DirectDraw). Then I use the GDI function StretchDIBits(...) to display this image inside a window.
Now, I want to zoom or unzoom the image. At this time I do that by changing arguments of the StretchDIBits(...) function. For example:
StretchDIBits(pDC->GetSafeHdc(),
0, 0, MAX_WIDTH * coef, MAX_HEIGHT * coef,
0, 0, MAX_WIDTH, MAX_HEIGHT,
Desc_ddsd.lpSurface, pBMPinfo, DIB_RGB_COLORS, SRCCOPY);
where coef is a coeficient for the zoom (if coef > 1) or unzoom (if coef < 1).
When I unzoom the image it's quickly enough. But when I zoom it's very slow. I can understand why! My question is: how to improve the zoom performances. I want a quick zoom. Does there exist another function?
Thanks for your help...
Hello World!!!
from Raphaël
|
|
|
|
|
If I want to create forder "3" like this c:\3\
How to write program to do that?
|
|
|
|
|
CreateDirectory() and CreateDirectoryEx()
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
or use crt function : mkdir
I am seeking...
For what?
Why did you ask me for what? I don't know!
|
|
|
|
|
Query regarding CTreeCtrl
how can we change the state of a icon placed in tree control . ie. on click of a button the icon should be changed to another state (2 states ON and OFF)
|
|
|
|
|
there are two kind of tree icons
TVSIL_NORMAL and TVSIL_STATE, see CTreeCtrl::SetImageList help,
second one you can change by
m_TreeCtrl.SetItemState(hTreeItem, INDEXTOSTATEIMAGEMASK(state), TVIS_STATEIMAGEMASK);
t!
|
|
|
|
|
CImageList* pImageList;
pImageList.Create(16,16,(ILC_MASK | ILC_COLOR32) ,0,0);
<br />
pImageList.Add(AfxGetApp()->LoadIcon(IDI_FOLDER));<br />
pImageList.Add(AfxGetApp()->LoadIcon(IDI_OPEN_FOLDER));<br />
m_pTree.SetImageList(&pImageList,TVSIL_NORMAL);
m_pTree.InsertItem("TEST",<big>0</big>,<big>1</big>,hItemRoot,TVI_LAST);
0 = select the icon "IDI_FOLDER" when your item is not selected.
1 = select the icon "IDI_OPEN_FOLDER" when your item is selected.
hope it's what you need
|
|
|
|
|
Anybody that knows me knows my math skills well umm.. suck.. so can somebody explain to me the difference. The first I came up with. the second is an example I took from a friend. What is the difference. The output is the same, but I need to know that my way (the first) correctly solves the equation.
----------------------------------------------
float dFirst;
float dSecond;
// My way
dFirst = (-b + sc) / (2 * a);
dSecond = (-b - sc) / (2*a);
cout <<"First: " << (int)dFirst <<endl;
cout <<"Second: " << (int)dSecond <<endl;
// his way
dFirst = (-b / (2*a)) + (sc / (2*a));
dSecond = (-b / (2*a)) - (sc / (2*a));
cout <<"First: " << (int)dFirst <<endl;
cout <<"Second: " << (int)dSecond <<endl;
-------------------------------------------------
IMHO: C# a poor attempt at bringing C++ to the VB masses
|
|
|
|
|
Assuming that in both versions that
sc = sqrt(pow(b,2) - (4 * a * c))
the difference is that the first combines additive terms before dividing by (2 * a), while the second performs the division on each term before adding. The two approaches are equivalent, and both will give the same wrong answer most of the time by casting a result that is very rarely an integer to int. Also, since dFirst and dSecond are declared as type float you lose precision, as the float type is limited to about 6 digits of precision. I'd stick to using double variables for the calculation, then convert to float for the output if necessary for some reason.
Ancient man conquered his rivals with the jawbone of an ass; modern man uses the jawbone of a politician.
|
|
|
|
|
Thank you for the insight. please excuse the casting and the float. If you notice the variables start with d because orginialy they were doubles. I changed to float for an output test. Other than that, it will ouput the correct answer? am I correct in assuming that?
-----
IMHO: C# a poor attempt at bringing C++ to the VB masses
-----
|
|
|
|
|
It's really the int cast that caught my eye - the root of a function is very rarely an integer, and I hate imprecise answers. As a rule, I try to use the greatest precision available in all internal calculations, then use a cast as the final step to limit the output to what the program needs to provide. You're correct in assuming that it will give the right answer, within the limits of the data types you've selected.
The short form of my answer, without my editorial comments, would be that the two implementations are equivalent. Yours may be more efficient, as it requires for each solution one addition and one division, while the other uses two divisions and one addition. Division requires more CPU cycles, generally, than addition, too.
Ancient man conquered his rivals with the jawbone of an ass; modern man uses the jawbone of a politician.
|
|
|
|
|
Thank you very much for the help. Seeings as how I did not even know what a quadratic equation was before I started this little project. I just got a hold of the formula, and kinda winged it from there to come up with an answer.
Thank you very much.
-----
IMHO: C# a poor attempt at bringing C++ to the VB masses
-----
|
|
|
|