|
Hello,
INTRODUCTION:
------------------------------------------------------------------------
I'm writting into an HTML view HTML code directly from memory in an application that shows information to the user using a HTML view.
In order to create the HTML document I use the workaround "about:" and the navigate method, this gives me a new document that I can access using the code below:
*****************************************************
CComQIPtr<ihtmldocument2> spHTMLDocument = this->m_HTMLCtrl.GetHtmlDocument();
if(spHTMLDocument)
{
CComQIPtr<ihtmlelement> spHTML;
spHTMLDocument->get_body(&spHTML);
...
*****************************************************
In this way I create a document in the OnInitdialog by calling the code below:
**********************************************************************
this->m_HTMLCtrl.Navigate("about:");
**********************************************************************
and then I access the HTML document when I need it using the first portion of code.
QUESTION:
------------------------------------------------------------------------
Using the "navigate" code (this->m_HTMLCtrl.Navigate("about:....)
makes that the HTMLView get a document created but when I acces it and I place the real html code inside the document, I leak some memory.
How should I create a HTMLDocument instance using COM (I think that is called "COM", I'm referring at the code model followed in the first block of sample code in the "INTRODUCTION" part)?
if there is no possibility to do it, how do I remove the memory occupied by the document, or at least, how do I remove the contents of the document in order not to leak the memory?
SUMMARY
-------------------------------------------------------------------------
I want the equivalent to the code below (used in order to create an instance of a XML doc):
hrInstanciarXMLDoc = this->m_pxmlDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
but I don't want a new XML doc I need a new HTMLDoc.
Thank you in advance...
|
|
|
|
|
Hello There.
I can't really help you with you immediate problem but when you get some time I would suggest you look into the new CDHtmlDialog class in MFC 7. It allows a much cleaner interface between the C++ code and the HTML document.
Art
|
|
|
|
|
...
I'm feeling so stupid... but...
Where do I can find the MFC7.0 to download (I'm using VC++6).
Thank you in advance...
|
|
|
|
|
Sorry,
MFC7.0 is the latest MFC version available with VS.net. Some people call it VC++7 or MFC7.0 to distinguish it from the .Net languages.
Art
|
|
|
|
|
Then... I'll need to wait to have the VS .NET in my hands...
Thank you for your interest.
|
|
|
|
|
Hi all,
I'm trying to change the default icon that is used in Windows explorer for my file type, so I've changed the registry entry for HKEY_CLASSES_ROOT\MyFileType\DefaultIcon (Default) = "c:\windows\shimgvw.dll,1" , but my icon remains unchanged in explorer. Is there something I need to do to get explorer to use the new value? Or have I set it up incorrectly in the registry?
Dylan
|
|
|
|
|
if you have the associations made correctly try restarting windows
be cool
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
I am trying to run a program including <string> but I get some warning messages with Borland C++ compiler saying:
string.h: Functions containing for,while or some return statements are not expanded inline
string.h: conversion may lose significant digits
string.h: cannot create pre-compiled header: code in header
Any ideas about what's going wrong?Thank you for your help.
|
|
|
|
|
Hi everyone. You're not gonna like this one. I know I don't But I have to figure it out and I'm really stumped. I hope there is someone here who can help
here's the situation:
I've created an MFC Dll that contains some dialog boxes does A,B & C. It uses CDialog and CWinApp (remember this). This Dll is called by an application.
Now here's the Big problem. The application calling the MFC dll is an Xvision App (running through an Xwindows converter called Nutcracker) on a windows P.C. My problem is that the message loops from the CWinThread (parent of CWinApp) and in CWnd (parent of CDialog) don't allow the XWindows message loop to be processed.
I've done this before but the dlls I used didn't have the message loop in them, so I was able to create a message loop in the "Xwindows conversion" which allowed me to insert a trigger (XtAppAddTimeOut(...) ) that would allow the Xwindows messages to be processed.
I'm stuck with this method at the moment. I know it stinks but that's what I have to work with.
If ANYONE has ANY comments or suggestions (even if it's a comment on how much of a kludge this is ) Please please let me know.
Thank you in advance!
Dan Willis
|
|
|
|
|
I didn't think anyone would tackle this one, just based on the fact that it intertwines both Xwindows and Windows.
Oh well.
|
|
|
|
|
I am trying to add the contents of the editbox part of the CCombobox to its listbox area when the user presses enter.
I tried the foll, but as I suspected this traps every keystroke. I just want the final text when the user is done and presses enter...
void CCombtestView::OnEditchangeCombo3()
{
}
void CCombtestView::OnEditupdateCombo3()
{
CString h ;
m_combo1.GetWindowText(h);
m_combo1.AddString( h);
}
Appreciate your help,
ns
|
|
|
|
|
Try to pretranslate the message WM_KEYDOWN and then filter the return... if you want another and more polite way to do it, derive a class from the combobox and handle the keys from there...
I was wondering if WM_CHAR could help you too...
Hope this helps...
|
|
|
|
|
Hello
I am trying to create an application that has a main windoe and two child frames inside the main window. One frame needs to be dialog based so I can place a number of controls and edit fields on it. The other needs to be a plain window that can except drawing and/or plot information from the program. I would like to have both windows fixed in size and position and have both of them come up automatically when the program starts. Ther are a few other features that I want to add but that will be addressed after I get this structue working and the program running.
I have figured out how to create an MDI application. I chose to use an MDI because it looks like the only window style that will do what I want. I will admit that I am a hardare designer and this is my first time with Visual C++. So I am an extream novice. I do have two copies of "Teach youself Visual C++" books by SAMS, however they are not much help for this application. So I thought I would locate some experts! Any help would be greatly appreciated.
|
|
|
|
|
In your case you really don't need to use MDI if you only need to create 2 views from the same document. What you can do is create and SDI application, and then use a splitter Frame. using a splitter window allows you to insert a seperate view into each of the splitter panes, and each one of these views can be what ever you need them to be, i.e. a FormView, CDialog box, RichEdit, what ever you need. Then each of these views can access the Document class which you setup and, and have access to the data.
There are many great articles in here about creating splitter windows and how to associate view with them as well as many articles on dealing with MDI and SDI.
I know this is kinda vague, but I think I at least pointed you in the right direction.
Hope this helps!
Dan
|
|
|
|
|
Dan
Thanks for the reply. What I am trying to do is create two separet frames that are independante of each other. One frame needs to be a dialog box in which I will place controls or options for running the program and the other frame will be an output of the program results. The results will be a plot of an airfoil and some data in a list next to the plot. I would like to have the two frames fixed in size and position when the program is in a full screen view or just come up with a default size and position. Also the two frames must he contained inside a main window. Are there any articles on how to do this?
Thanks
Scott
|
|
|
|
|
Will you trully have multiple documents?
Create MDI/SDI ( I recommend SDI), create Dialog place controls on it. Insert new class based on CDialogBar, in Mainframe::OnCreate create yor bar given ID of your dialog. Dock dialog (left/right/whatever).
I would not even bother with splits.
|
|
|
|
|
If I want to set IP in my program,which API should I use,and how to use these API?
thanks!
by the way ,I found that there were not Iphlpapi.h in my PC when I want to use function AddIPAddress(XX)
Don't look at me in that way!
|
|
|
|
|
well you do need to use the ip helper api package. If its not on your pc than you need to download/install the most recent SDK you can find. That should take care of it for you. Once you've done that you have access to a rich api that will let you take care of all that for you.
Joseph Dempsey
joseph_r_dempsey@yahoo.com
"Software Engineering is a race between the programmers, trying to make bigger and better fool-proof software, and the universe trying to make bigger fools. So far the Universe in winning."
--anonymous
|
|
|
|
|
Deal All,
I'm goint to customize Windows Media Player 6.4 using VB 6 or VC++.
THe basic requirements for this task are:
1) the media player only play at full-screen mode. This is quite easy and I can set the properties related.
2) the media player is exclusively run, which means when there is a playback, there would be no other player running simutaneously.
I dont know how to do this by customizing media player. However, I set the program checking at starting point if there is a previous instance of this program. If yes, then abort the new started player program.
However, if the file name of this media player changed, two media player programs with different names will be running simultaneously, which is a situation i did not expect to see.
3) The full screen mode seems not so stable. For example, if I try to start, at the same time, the same player program more than once, only one will run but NOT in full screen mode.
I appreciate your help!
JW
DJ
|
|
|
|
|
This is an 'official' bug of the .NET compiler. Does someone has any clue on solving this issue ????
Jonathan de Halleux.
|
|
|
|
|
Hello,
I have SDI app of type CTreeView.. My question is, is there a way of moving the tree over x number of pixels and down y number of pixels?? I'm using the OnPaint function to paint a border around the outside of the tree, the only problem is that the tree is so close to the top and left side of the window that my border covers part of the tree...
Any ideas??
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
If you inherit from the TreeView, you could override the WM_NCCALCSIZE / OnNcCalcSize message
to give yourself some non-client area to put a fancy border in using WM_NCPAINT / OnNcPaint.
Iain.
|
|
|
|
|
Thanks for the quick reply.. I have been trying the following... The only problem I am having is I can't seem to paint on the non-client area.. I can see a 5px gap all the way around the tree, even when I paint my border.. Here is what im trying on my WM_NCCALCSIZE msg..
LRESULT CMyTreeView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_NCCALCSIZE)
{
if(wParam == TRUE)
{
RECT* prect = (RECT*)lParam;
prect->right = prect->right - 5;
prect->left = prect->left + 5;
prect->top = prect->top + 5;
prect->bottom = prect->bottom -5;
return 0;
}
}
return CTreeView::WindowProc(message, wParam, lParam);
}
Any ideas? Am I doing this all wrong?
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
I actually had CTreeCtrl in mind when I replied earlier! Doh...
Having a quick look at the DSK for calcsize, when wParam == TRUE,
lParam = (NCCALCSIZE *), not (RECT *). But you are getting away
with it! A five pixel gap is what you asked for.
How are you trying to paint? You need to be using OnNcPaint.
Iain.
|
|
|
|
|
THanks,
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|