|
|
|
|
|
For the source code to 5 different kinds of balanced binary trees see http://www.5trees.com. Please enjoy.
5Trees
|
|
|
|
|
what if we want an optimized imbalanced binary tree? (otherwise known as a splay tree) I do normally use AVL trees, but not always.
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
Jeffry J. Brickley wrote: what if we want an optimized imbalanced binary tree? (otherwise known as a splay tree) I do normally use AVL trees, but not always.
I have looked at splay trees but I have not researched them in depth. Personally I am very fond of the original AVL Algorithms. AVL algorithms are rock solid and may be applied to finite ordered sets, dynamic arrays, maps and tables (see http://www.5trees.com for definitions of these terms). I intend to stick with AVL trees rather than research on Splay Trees or RedBlack Trees - I'll leave that to others. Interestingly, the STL standard for Maps uses RedBlack Trees. 5Trees uses AVL to implement associative arrays.
Cheers,
Ben.
5Trees
|
|
|
|
|
I favor Ternary Search Trees.
People that start writing code immediately are programmers (or hackers), people that ask questions first are Software Engineers - Graham Shanks
|
|
|
|
|
Hi I'm using a CAsyncSocket to create a TCP socket and connect to a server. Everytime I connect, the error code I get is a WSAEWOULDBLOCK, whether the server is there or not. So, the only way I know if I am connected or not is to send a message to the server, and I have to look to see if I have a send error of WSAENOTCONN to determine if my connection was a success or not. Is there any way, to know if I am really connected or not when I try to do a 'connect', instead of the approach that I'm taking right now?
Thank you,
//Code
m_pSock.Create(); //Create the socket
if (!m_pSock.Connect(IP, PORT))
{
DWORD error1 = GetLastError();
if(error1 == WSAEWOULDBLOCK)
{
iSent = m_pSock.Send((void *)messages[0],32);
if(iSent == SOCKET_ERROR)
{
DWORD error2 = GetLastError();
if(error2 == WSAENOTCONN )
{
MessageBox("SOCKET NOT CONNECTED",NULL,NULL);
}
}
}
}
-- modified at 20:30 Friday 7th April, 2006
|
|
|
|
|
The mistake you're making is that you are trying to use asynchronous sockets synchronously.
In synchronous sockets, you tell the socket what to do, step by step.
In asynchronous sockets, the socket tells you that it's ready to do something, and then you tell it to try.
If an asynchronous socket can't do what you tell it to, then it returns SOCKET_ERROR and WSAGetLastError returns WSAEWOULDBLOCK. This signifies that the requested operation cannot be performed without blocking (which you don't want), and that the socket will tell you later, when it's ready, to try again. Then, later (and asynchronously), the socket will send an FD_CONNECT message to your message loop (or something similar, like FD_READ, depending on circumstances), which eventually filters down to your override of the virtual OnConnect function.
So, WSAEWOULDBLOCK is very common and must be programmed for. In your case, you start the whole process by calling Connect. If it succeeds, then great, do the next thing. But it probably will fail with WSAEWOULDBLOCK. In this case, at some later time in the future, your OnConnect function will be called, signifying that the socket is ready for you to try again. Inside OnConnect, try calling Connect again, but again be ready for the (much lowered) possibility that WSAEWOULDBLOCK might be returned again.
You need to do this for each significant event that you are interested in, like OnReceive, OnSend, OnClose etc.
Mike
|
|
|
|
|
I want to display series of numbers from 1 to 50 (that handled by variable i) use CPaintDC.TextOut();
Please help me !
Thanks !
Lgx
-- modified at 19:05 Friday 7th April, 2006
|
|
|
|
|
To display the series on the same line, simply construct the string and use TextOut() to display it, as in:
CString strNumbers;
for (int nNum=1; (nNum <= 50); nNum++) {
CString strNum;
strNum.Format ("%d ", nNum);
strNumbers += strNum;
}
VERIFY (pDC->TextOut (10, 10, strNumbers));
/ravi
My new year's resolution: 2048 x 1536
Home | Music | Articles | Freeware | Trips
ravib(at)ravib(dot)com
|
|
|
|
|
i don't understand final code :
VERIFY (pDC->TextOut (10, 10, strNumbers);
what's it mean ?
Lgx
|
|
|
|
|
Surivevoli wrote: VERIFY (pDC->TextOut (10, 10, strNumbers);
VERIFY means to verify that your statement is properly fired or not.. try you local copy of msdn for these keywords
|
|
|
|
|
See this[^] link for information on the VERIFY and ASSERT macros.
/ravi
My new year's resolution: 2048 x 1536
Home | Music | Articles | Freeware | Trips
ravib(at)ravib(dot)com
|
|
|
|
|
Hi Surivevoli,
CString Str;
int i=0;
while(i<50)
{
Str.Format("%d",i);
dc.SetBkMode(0);
dc.TextOut(X,50,Str,Str.GetLength());
X+=20;
i++;
}
|
|
|
|
|
Thank you !
dc.SetBkMode(0)is uderstanded as dc.SetBkMode(TRANSPARENT)???
if before i draw a rectangle filled Red color
{i use CBrush ...},
i try release that command{dc.SetBkMode} and use TextOut() to draw number text on the rectangle, but i see nothing changed
if i want display formated "01","02","03",...
Can you help me ?
Lgx
-- modified at 6:34 Saturday 8th April, 2006
|
|
|
|
|
Surivevoli,
CString Str;
int i=0;
while(i<50)
{
Str.Format("0%d",i);
dc.SetBkMode(0);
dc.TextOut(X,50,Str,Str.GetLength());
X+=32;
i++;
}
-- modified at 7:13 Saturday 8th April, 2006
|
|
|
|
|
//Now test this code then again test without SetBkMode
CPaintDC dc(this);
CString Str;
int i=0;
dc.FillRect(CRect(0,50,800,80),&CBrush(RGB(120,120,200)));
while(i<50)
{
Str.Format("''0%d''",i);
dc.SetBkMode(0);
dc.SetTextColor(RGB(255,255,255));//White
dc.TextOut(X,55,Str,Str.GetLength());
X+=40;
i++;
}
|
|
|
|
|
thank you very much !
what is the difference between CPaintDC and CClientDC ?
for you, what class should i use ?
for example :
i want draw a bitmap at coordinate of mouse when it is pressed Left
|
|
|
|
|
|
Surivevoli wrote: I want to display series of numbers from 1 to 50 (that handled by variable i) use CPaintDC.TextOut();Please help me !Thanks !
use wsprintf to add number in string and you can easily display that using the TextOut, but IMHO you should use CDC::ExtTextOut for same!
|
|
|
|
|
what's difference between TextOut() and ExtTextOut() ???
why should you ExtTextOut()??
|
|
|
|
|
Hey everybody. I'm so pissed off and angry on this thing I'm working on, that I exhausted myself. Before angrily going to sleep, I'm going to tell you a
bit of this problem, maybe there are some bright minds out there which can figure out what I couldn't, all day.
I got a main window. One "Static" window in it (a label child) with some text. Even though the main window is HWND_TOPMOST, sometimes Window's OS tooltips get over it. In those cases, I need to repaint. So I invalidate and repaint. The problem is that the child flickers. If I do 10 repaits per second I see an annoying flicker. I've been killing myself all day with back-drawing in memory DCs but with no use grr. Whatever I do, that label keeps flickering! What can I do about it!? ANY IDEAS? ANY? ANY LITTLE THING. I'm desperate ::- (.
I was thinking 5 minutes ago to make a snapshot of the window in a HBITMAP and then simply BitBlt that each redraw. But probably the label will keep flickering since probably it's WM_PAINT code will execute before or after the main's window WM_PAINT (don't know the order of events right now) so I'm going to have worked in vain to construct that snapshots system.
-= E C H Y S T T A S =-
The Greater Mind Balance
|
|
|
|
|
Well, since you're inviting any ideas, I thought I would ask why you can't draw the text directly onto the client surface of the window without using a static?
|
|
|
|
|