|
Hello,
I have an MFC program (/clr) that is a remoting client. My issue is that once we have got our remote object, then for some wacko reasons as yet unknown to me, I am unable to create a view for a frame window. The Create just fails.
My solution to this was to create the window and hide it before the remote object was obtained and then to show/hide it as required.
But the issue is that sometimes the user can do something where the remote object is created, then he goes back to the main window, then he comes back to this window where the remote frame/view is created. Now if the GC is given enough time to destroy the unused object, everything is fine.
But my problem is that the GC is sorta slow on all this and I am having problems.
So, how do I force the GC to destroy the remote object? And what do I do if the GC fails to recognize the object as unused and thus fails to free it? Is there anyway I can simulate a delete on a managed object?
Regards,
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Nishant S wrote:
The Create just fails.
What is the error. What does ERR,hr say?
Step back, rub your eyes, take a deep breath, stretch a bit, and reflect on the relative importance of CP, CG, the age / travel time sustained by supposedly 'fresh' cheese curds, and Life in General. - Shog9
|
|
|
|
|
Rama Krishna wrote:
What is the error. What does ERR,hr say?
The view is a CHtmlView derived view and the call to Create returns false
I think once we've got a remote object, for some reasons we cannot create webbrowser controls. Because my Create call in the CFrameWnd derived class didn't fail, it was only the view creation in the CFrameWnd::OnCreate that fails
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Are you initialzing COM correctly - CoInitialize(NULL) ?
[EDIT] Since you are using MFC are you calling AfxOleInit ?
Nishant S wrote:
Create returns false
Put ERR,hr is watch window it will show you the reason why it failed.
Step back, rub your eyes, take a deep breath, stretch a bit, and reflect on the relative importance of CP, CG, the age / travel time sustained by supposedly 'fresh' cheese curds, and Life in General. - Shog9
|
|
|
|
|
Rama Krishna wrote:
Are you initialzing COM correctly - CoInitialize(NULL) ?
Not using any COM, not much anyway!!! [Just a few lines to get the underlying web browser control and to set the html]
Rama Krishna wrote:
Since you are using MFC are you calling AfxOleInit ?
Hmmm. Nope. I mean I am not calling it on my own. Dunno if that might be the problem. Because the window creation (frame and view) succeeds *if* the remote object is not obtained. It fails *only* if we have obtained the remote object
very puzzling, very puzzling indeed!
Anyway it's part of a work-time tracking system app that I'll be submitting to CP soon, if I can only get rid of this goddamn error
Rama Krishna wrote:
Put ERR,hr is watch window it will show you the reason why it failed.
Huh? Just like that --- "Err,hr"
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Nishant S wrote:
Not using any COM, not much anyway!!!
You need to initialize COM by calling AfxOleInit if you are using the webbrowser control. That is why Create fails.
Step back, rub your eyes, take a deep breath, stretch a bit, and reflect on the relative importance of CP, CG, the age / travel time sustained by supposedly 'fresh' cheese curds, and Life in General. - Shog9
|
|
|
|
|
|
I'm going to go out on a limb and say that it initializes COM for you and either MFC doesn't get to do its initialization or that it initializes it with settings incompatible with the web browser control.
Just a guess
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
James T. Johnson wrote:
I'm going to go out on a limb and say that it initializes COM for you and either MFC doesn't get to do its initialization or that it initializes it with settings incompatible with the web browser control.
What does that mean?
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Nishant S wrote:
Alright, then how does Create succeed when I don't obtain the remote object?
Instead of speculating over and over, it will be useful if you add those two lines of code and see whether stuff works.
Step back, rub your eyes, take a deep breath, stretch a bit, and reflect on the relative importance of CP, CG, the age / travel time sustained by supposedly 'fresh' cheese curds, and Life in General. - Shog9
|
|
|
|
|
|
I forgot to mention that
you also need to call AfxEnableControlContainer.
Nishant S wrote:
Huh? Just like that --- "Err,hr"
Yes. It is a very cool feature.
Step back, rub your eyes, take a deep breath, stretch a bit, and reflect on the relative importance of CP, CG, the age / travel time sustained by supposedly 'fresh' cheese curds, and Life in General. - Shog9
|
|
|
|
|
|
System::GC::Collect()
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
James T. Johnson wrote:
System::GC::Collect()
Thanks Jambo. I'll try that. But what if the GC fails to recognize the unused object as a free one. How do I tell the GC that this object is now free. Will setting it to point to NULL help in freeing the now-orphaned object???
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Yes, you need to set it to NULL.
However it would be prudent to follow Rama's thread and get to the root of the problem instead of a hack to work around what is a bug somewhere in your code.
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
James T. Johnson wrote:
However it would be prudent to follow Rama's thread and get to the root of the problem instead of a hack to work around what is a bug somewhere in your code.
I am trying to, Jambo! I really am!! The annoying thing is that everything works fine if I don't obtain the remoted object. After that everything falls down
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
*sigh* My head hurts. So eventually I have decided to stop banging it against VS.NET, and ask you.
All I want to do is use the CodeProject WebService in a MC++ class library. I tried to use the Add Web Reference method but for the life of me I cannot then use the newly created WebService.h and latestbrief.dll files. In the AutoComplete there is no reference to LatestBrief, CodeProject, Service1 or even HolyMotherOfGodThereAreALotOFThingsInAMC++AutoCompleteList.
I even did what the "Walthrugh: Accessing an XML Web Service Using Managed Extensions C++" article in MSDN said.
I know it is something obvious, so please, hit me with it.
[edit]
There is an "error" in the Task List which reads "f:\data\projects\cp+\cp+classlib\latestbrief.dll Dependency 'latestbrief' of dependency 'CP+ClassLib' is not an assembly.". Could that be the problem? If so, how the hell do I fix that without doing what the help says which is to reinstall VS.NET or the "third party component."
ta
[edit]
thanks.
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
The greatest thing you'll ever learn is just to love, and to be loved in return - Moulin Rouge
Alison Pentland wrote:
I now have an image of you in front of the mirror in the morning, wearing your knickers, socks and shoes trying to decided if they match!
|
|
|
|
|
Figured it out. Firstly intellisense did not list LatestBrief, and me not being very C++ aware, thought that meant the WebService method was not available. How naive!
Still getting that Dependency 'latestbrief' of dependency 'CP+ClassLib' is not an assembly. error though. But at least I can get the data now.
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
The greatest thing you'll ever learn is just to love, and to be loved in return - Moulin Rouge
Alison Pentland wrote:
I now have an image of you in front of the mirror in the morning, wearing your knickers, socks and shoes trying to decided if they match!
|
|
|
|
|
|
Nishant S wrote:
What are you doing??? You been MC++ing for a while now! Are you developing some kinda killer app with MC++ ???
LOL, all will be revealed when I submit my article for the competition (I will be shaving the closing deadline rather close )
Obviously it is not a killer app, too much overhead for me in learning MC++ to produce a killer app on my first go. But it is pretty cool nonetheless, uses a host of new capabilities in the language and framework.
A clue: It uses the Code Project webservice, but is not a screen saver or a ticker effort.
I actually only got serious on the article this monday, been fooling around figuring things out up until that point. Now my ass is in gear
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
The greatest thing you'll ever learn is just to love, and to be loved in return - Moulin Rouge
Alison Pentland wrote:
I now have an image of you in front of the mirror in the morning, wearing your knickers, socks and shoes trying to decided if they match!
|
|
|
|
|
|
Nishant S wrote:
I hope some of my MC++ intro articles were useful
Most definitley Nish. You are a great editor and article writer. You should check the messages on your articles, I posted one (the MC++ intro that that one idiot wrote that nasty post on.)
Nishant S wrote:
Cool! I am submitting one too
Ahh damn, and here I was hoping I was going to win, and then you come along. Dang, going to have to settle for second place I guess.
regards,
Paul Watson
Bluegrass
Cape Town, South Africa
The greatest thing you'll ever learn is just to love, and to be loved in return - Moulin Rouge
Alison Pentland wrote:
I now have an image of you in front of the mirror in the morning, wearing your knickers, socks and shoes trying to decided if they match!
|
|
|
|
|
|