|
Hello Experts,
My project required a cmd prompt type control which can take command and diskplay result. I used CRichEditText control to accomplish this. But It is slow while drawing beacuse when I need to display text I have to use GetWindowText() + Append Test then SetWindowText().Everytime it displaying the whole content again.
Is there any workwround to solve this problem?
|
|
|
|
|
john5632 wrote: when I need to display text I have to use GetWindowText() + Append Test then SetWindowText().Everytime it displaying the whole content again.
why ?
and wouldn't that create an endless loop?
draw, append, redraw, reappend, reredaw, rereappend....
|
|
|
|
|
Try positioning the cursor at the end of the edit using CRichEditCtrl::SetSel[^] and then use CRichEditCtrl::ReplaceSel[^] to add the new text. This still won't be too fast but probably faster than what you use now.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
Have you looked at other projects here on CP that do the same thing? Here's one[^], but I've seen others (do a search).
|
|
|
|
|
The chatroom server app is used TCP WSAasyncSelect mode .
I want ban some ip in the chatroom,let him doesn't connect the server.
Now I use a vector list to save the ip, when someone connect ,it will traversal search .
if in the black list, then call closesocket.
But this is the low efficiency.
Is there any other way?
Thanks for you replay !
|
|
|
|
|
you could use a map, or a set, with the IP as key.
|
|
|
|
|
I imagine there's plenty of slow stuff going on, so traversing a vector would not be tooooooo bad - but you could a set if you'd like a more efficient way of testing if an item is in a "List" or not...
http://www.cplusplus.com/reference/stl/set/[^]
It's slower to add an item, but testing for existence will be faster than vector. And I'm sure people connect (and are accepting) a vast amount more than they are banned.
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
the vector and map like same as. what's the mean ?
|
|
|
|
|
vector , map , and set and all stl containers. They do different jobs though!
See these links:
std::vector[^]
std::map[^]
std::set[^]
I hope that helps - a bit, at least!
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
hello guys... I was wondering if we can differenciate between two variables as they can have same type. Yet one of them can be simple class variable while other being member variable ; added using Add Variable wizard. This can be seen in DoDataExchange but is there a better way?
This world is going to explode due to international politics, SOON.
|
|
|
|
|
There is no actual difference between a variable added by the class wizard, and a variable you type in yourself.
As I'm sure you've noticed, those added by the class wizard have comments around them, so the class wizard can parse the header file.
As far as the code is concerned.... zero difference.
Variables you add manually are just as much member variables. They should not face your prejudice!
To move on... I'm sure you already know this - what problem are you trying to solve?
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
Iain Clarke, Warrior Programmer wrote: As far as the code is concerned.... zero difference.
Variables you add manually are just as much member variables.
I think I could not state my question properly. I apologize as my first language is not english. I was trying to say is that:
- There is this variable you just add to the class like: CString strMessage1;
- Another variable you added using wizard which is bound to a control (say EditBox) like this: CString strMessage2.
Now I know in DoDataExhnage , we can clearly see that strMessage2 is bound to the EditBox. They both will look like this in the header file
CString strMessage1;
CString strMessage2;
Iain Clarke, Warrior Programmer wrote: what problem are you trying to solve?
But I wanted to ask is there a better way to find out that which variables are bound to the controls (strMessage2) and which variables are not (strMessage1)?
This world is going to explode due to international politics, SOON.
|
|
|
|
|
OK, I think I'm clearer now, but I don't have good news for you.
Just because a variable is used by a function call inside another function (which happens to be called DoDataExchange) does not make it special in any way, nor "bound" in the way that (eg) wpf binds things.
If you had something like:
CMyClass::CMyClass ()
{
BindVariable (IDC_CHECK1, m_bCheck);
...
}
in your constructor, then maybe there would be some list... but you don't - unless you've written it yourself.
Try stepping into one of the DDX_xxxx functions, and you'll see how unspecial it is.
Depending on the problem you are trying to solve (I still don't know), maybe you want to write some kind of binding mechanism that you set up in the constructor, and then a DoDataExchange that uses that binding system to then call the DDX functions. But that seems like a LOT of work...
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
Yeah, there is a greyed out section in the cpp file that has an ON_DDE macro or some such that takes as args the var and the control ID.
==============================
Nothing to say.
|
|
|
|
|
Overloaded_Name wrote: But I wanted to ask is there a better way to find out that which variables are bound to the controls (strMessage2) and which variables are not (strMessage1)?
What's wrong with consulting DoDataExchange() ? All it takes is a glance.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Yeah, this is trivial... I don't see the purpose to OP's question.
|
|
|
|
|
Well everything is OK with the existing DoDataExchange() . The number of bound variables with the controls are getting increased in my small application. I was hoping there might be a better way to look for these variables. It was just a curious question, now I know there is no such way. Thanks.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Overloaded_Name wrote: hoping there might be a better way to look for these variables
You could always ensure you give the variables meaningful names so you can easily differentiate between them.
""Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
Overloaded_Name wrote: I was wondering if we can differenciate between two variables as they can have same type. Yet one of them can be simple class variable while other being member variable
They have the same type but different modifier (storage class): you must use the static keyword to specify class variables (see MSDN[^]).
Veni, vidi, vici.
|
|
|
|
|
I want to draw an avl tree in a dialog,the tree is done,what I don't know is how to draw it,would somebody help me?
|
|
|
|
|
|
|
Quick answer: Assign coordinates to the leaves first.
The leaves will be equally-spaced in the X direction, so assigning X coordinates can be done just by incrementing as you go through all the leaves from left to right.
The X coordinates of each interior node will be centered above its two sons.
Y coordinates are just a multiple of the level.
"Microsoft -- Adding unnecessary complexity to your work since 1987!"
|
|
|
|
|
Many thanks.
Best wishes to you!
|
|
|
|
|
Hi,
Or another way of putting it can I do PostThreadMessage to a Worker Thread
Or if only a UI Thread has a message queue can m_pActiveWnd and m_pMainWnd
be NULL
Thanks in advance
|
|
|
|