|
Hello everyone!
I have an MDI application (using VC++ 6), which utilizes several document templates as well as just dialogs. Recently I started adding the context help feature (just control-related popup windows and the "?" button functionality). It works fine for simple dialogs, but how to add the same to a CView? I have CTreeView-based CView and would like to have the same "?" button there too in order to preserve the UI consistency...
Thank you for help in advance
Mike
Mike
|
|
|
|
|
Hi guys, i'm a final year computer engineering student currently developing a software to extract messages from instant messengers as part of my final year project.
I would need some opinions on the architecture i had researched on. Currently i proposed the popular method of getting the handle of the message window once it is activated retrieve the text from the messagebox. This method is widely implemented i believe, for its simplicity and straightforward programming. My supervisor in charge however commented that this is not very stable as it is too dependent on the application itself. He said a solution that will be less dependent will be better.
I believe another way will be to go into the lower level instead of the application level, such as WinSock, to retrieve the message. However i think this might be too complex and at the end of the day, not that feasible.
Does anyone has any opinions that can help me? Personally i think the first method is still the better one. I would really appreciate anybody who can comment on this such as the pros and cons or even if the 2nd method is viable. Thank you all in advance .
|
|
|
|
|
peachieboy wrote:
Currently i proposed the popular method of getting the handle of the message window once it is activated retrieve the text from the messagebox. This method is widely implemented i believe, for its simplicity and straightforward programming. My supervisor in charge however commented that this is not very stable as it is too dependent on the application itself. He said a solution that will be less dependent will be better.
Agreed. If the window caption or class changed, your method of finding the window would cease to function.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Have you looking into other instant messangers? there are some libraries that you could use that might fill your needs. Look up GAIM, and koPete, and ask the developers.
Those are two instant messangers for unix that come to mind, not saying they are any good. If nothing else you can read their source, and leverage that into the backend for your project. I think they both use some common libraries to do the task.
The above is a suggestion. I'm not clear on exactly what your goal is. It might be useless.
|
|
|
|
|
If I created a class inwhich I grabbed some registry settings and moved them to a memory variable in my class. What is the best way to pass these settings back to the calling main app?
And will the destructor destroy and memory variables when it leaves that class to go back to the calling app?
One last question. How come if I return a pointer to a memory variable, back to the calling app, the destructor does not destroy that. Does this mean that that data will reside in memory until the main app is exited?
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Tom Wright wrote:
What is the best way to pass these settings back to the calling main app?
Does the "main app" own an instance of the class?
Tom Wright wrote:
And will the destructor destroy and memory variables when it leaves that class to go back to the calling app?
The destructor will be called when the object goes out of scope, or when delete is called on the object.
Tom Wright wrote:
How come if I return a pointer to a memory variable, back to the calling app, the destructor does not destroy that.
We'd be in a world of hurt if passing pointers caused destructors to be called.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
DavidCrow wrote:
Does the "main app" own an instance of the class?
Yes...ah...What do you mean? This class is a generic class that has no base class to it. It is part of my main app.
DavidCrow wrote:
The destructor will be called when the object goes out of scope, or when delete is called on the object.
Okay. I understand that. So if the class has never been destroyed by my call app...by using the delete function (or goes out of scope)then any data that is in any memory variable in my called class will still reside there...right?
DavidCrow wrote:
We'd be in a world of hurt if passing pointers caused destructors to be called.
Sorry I did not phrase that right. I'm assuming that the destructor destroys that memory variable...but like you said above it will not destroy that pointer until the object is out of scope or deleted.
Can you give an example of when an object is out of scope? And is passing data this way a high risk for memory leaks or buffer overruns?
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
Tom Wright wrote:
This class is a generic class that has no base class to it. It is part of my main app.
Then it is a simple matter of accessing the class' member variable from the main app.
Tom Wright wrote:
So if the class has never been destroyed by my call app...by using the delete function (or goes out of scope)then any data that is in any memory variable in my called class will still reside there...right?
Correct.
Tom Wright wrote:
Can you give an example of when an object is out of scope?
void main( void )
{
int a;
{
int *x;
x = new int;
}
}
Tom Wright wrote:
And is passing data this way a high risk for memory leaks or buffer overruns?
Memory leaks and buffer overruns can happen in any situation. They are not limited to variables going out of scope. Consider:
class someclass
{
public:
void somefunction(int *n)
{
a = n;
}
private:
int *a;
};
void main( void )
{
someclass sc;
{
int x = 5;
sc.somefunction(&x);
}
}
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Why not granting the application a member of type this class?
The destructor will destroy all the statically declared variables. All the dynamically declared variables you have to excplicitely destroy in the destructor.
If the pointer you passed is pointing to some object allocated on the stack, then the pointer will be invalid as soon as the object is out of scope.
If you want the object to be "alive" when it is out of scope, you have to allocate it on the heap (using calloc, malloc (C) or new (C++))
This way the data will reside in memory untill you explicitly call delete on the pointer.
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Okay so in my calling app I could put this:
CGCICsettings* mySettings = new CGCICsettings;<br />
<br />
mySettings->GetRegSettings();<br />
mySettings->ipAddress;<br />
First I call my function call GetRegSettings(); Which is in my new class. It (the function) fills in a variable called ipaddress, which I'll be able to access this data, which is what I'm doing in mySettings->ipAddress. Right? After I'm done with this I delete it.
Does this sound right?
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
What you have looks ok, but without seeing how/where mySettings is used, I suspect allocating the CGCICsettings object on the heap is unnecessary. For example:
void somefunction( void )
{
CGCICsettings* mySettings = new CGCICsettings;
mySettings->GetRegSettings();
delete mySettings;
} In this context, a heap-based object is totally unnecessary.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Hi!
I've got a listbox, and the function (created with the classwizzard) that deals with the ONDBLCLICK message.
How do i get the text of the listbox item that i just dobleclicked?
thanks!!
|
|
|
|
|
Like this:
int nIndex = GetCurSel();
CString strText;
GetText(nIndex, strText);
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
|
I am working on a project. I have to convert some files ( perhaps HTML,MHTML,Doc,Txt etc.) into a single CHM,and also, the User can reload the CHM that had been generated for some modification. I don't even konw how to make and modify a CHM file using MFC. I am using Visual C++ 6.0. I hope some one could give a example. It could just cover only HTML2CHM and reload HTML from CHM for simple.
Thank you very much!
|
|
|
|
|
|
Hi!
i've got a dialog with two bitmaps (CStatic), and i want to do something when i click on each one.
I've got the following code:
<pre>
void CVentanaPizarra::OnLButtonDown(UINT nFlags, CPoint point)
{
CStatic* plapiz = (CStatic*) GetDlgItem(IDC_LAPIZ);
CStatic* pflecha = (CStatic*) GetDlgItem(IDC_FLECHA);
CRect lapizrect, flecharect;
plapiz->GetClientRect(&lapizrect);
pflecha->GetClientRect(&flecharect);
if ((point.x>lapizrect.left) && (point.x<lapizrect.right) && (point.y>lapizrect.top) && (point.y<lapizrect.bottom))
{
AfxMessageBox("lapiz");
}
if ((point.x>flecharect.left) && (point.x<flecharect.right) && (point.y>flecharect.top) && (point.y<flecharect.bottom))
{
AfxMessageBox("Flecha");
}</pre>
this doesn't do what i want. I gets the 'size' of each bitmap, but it doesn't get it's 'size' from the dialog.
example: lapizrect.top is 0, but i want to load it's position from the dialog.
any ideas?? thanks!!
|
|
|
|
|
A client rect always starts from 0,0. You can convert between different coordinate spaces by calling MapWindowPoints
|
|
|
|
|
how could i do it?
thanks!
|
|
|
|
|
kfaday!
You are not lazy, are you
Here is the declaration from MSDN:
void MapWindowPoints( CWnd* pwndTo, LPRECT lpRect ) const;
which I strongly suggest for reading (http://www.msdn.microsoft.com/[^]).
Something like:
CStatic* pflecha = ( CStatic* ) GetDlgItem( IDC_FLECHA );
pflecha->GetClientRect( &flecharect );
pflecha->MapWindowPoints( this, &flecharect );
should get flecharect in the coordinate space for the owning window.
|
|
|
|
|
thanks!!
that did it!!
msdn makes me dizzy sometimes..
there are many MapWindowPoints functions
|
|
|
|
|
Hie, I am a beginner in MFC programming.I want to know how to create a reset button using MFC.
Thanks in advance.
syasya
|
|
|
|
|
You draw a button in the resource editor and label it "Reset"
For more detailed help, you should probably try to describe what you want the button to do.
|
|
|
|
|
I am using Visual C++ 6.0 and am having problems with the threads dialog box. I find that after suspending execution and opening the threads box, sometimes not all the threads in the process are displayed. I can see the threads in a suspended state in Spy++ though.
Has anyone encountered this problem? Any help would be appreciated.
thanks
Man Learns from History that he never learns from History
|
|
|
|
|
I developped a program to communicate on serial port com. It works fine on xp/W2000.
Then I wanted to include this into a bigger project, so I decided to change it into a dll. It works fine on W2000, but the same application using the same dll sometimes doesn't work on WXP.
When I say it doesn't work I mean that the thing that reiceives the data transferred on the serial link acts as if the flow (115200 bauds) was interrupted sometimes.
The priority level of the emission thread is equal to the reception one: THREAD_PRIORITY_HIGHEST. So it should not be interrupted I think. Unless the fact that it is a dll's thread changes the situation?
Does anybody have an idea?
Thanks
|
|
|
|