|
Thank you. Yes Modeless is what I was looking for.
I am sorry If I confused you.
|
|
|
|
|
A tabbed dialog interface should suffice your needs.
You need to google first, if you have "It's urgent please" mentioned in your question.
_AnShUmAn_
|
|
|
|
|
Hey good people,
I am in need of an idea for a problem that has to have been solved a throusand times over. But after implementing some code that should take care of the troublemaker (rand()) - but didn´t - and a lot of research I am at a loss here.
I built a server which has to generate some random numbers for each client that connects. So I created a nice singleton wrapper class for the random generator and now it´s seeded (srand(time(NULL))) once at startup and thereafter every call should present me an actual (pseudo-)random number.
As you may have guessed, theory didn´t work out. All numbers are very random for every single call from ONE client. As soon as another client connects it gets THE SAME 'random' sequence of numbers. Even though the seed was plantet only once AND they don´t even ask at the same time.
Here´s a little code on the number generation, maybe someone has an idea:
ToolBox* ToolBox::m_pToolbox = NULL;
ToolBox::ToolBox(void)
{
m_pLogger = Logger::GetInstance();
srand ( time(NULL) );
}
ToolBox::~ToolBox(void)
{
}
ToolBox* ToolBox::GetInstance()
{
if( m_pToolbox == NULL )
{
m_pToolbox = new ToolBox();
}
return m_pToolbox;
}
BYTE ToolBox::GenerateRandomByte()
{
BYTE ret = LOBYTE((WORD)rand());
int r1 = rand();
int r2 = rand();
int r3 = rand();
int r4 = rand();
m_pLogger->Out( Logger::DEBUG, "TestRand 1: %d\nTestRand 2: %d\nTestRand 3: %d\nTestRand 4: %d\n", r1, r2, r3, r4 );
return ret;
}
int ToolBox::GenerateRandomInt()
{
return rand();
}
Any help is appreciated. Thanks.
Souldrift
|
|
|
|
|
|
I´ll look into it, thanks .
|
|
|
|
|
You should move the srand call:
ToolBox::ToolBox(void)
{
m_pLogger = Logger::GetInstance();
srand ( time(NULL) );
}
and
ToolBox* ToolBox::GetInstance()
{
if( m_pToolbox == NULL )
{
m_pToolbox = new ToolBox();
srand ( time(NULL) );
}
return m_pToolbox;
}
[added]
Nevermind I made a blunder.
[/added]
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
modified on Wednesday, June 24, 2009 8:49 AM
|
|
|
|
|
umm, where´s the difference. It gets called once either way.
Cheers
|
|
|
|
|
Yes, you're right. I made a blunder, forget it.
Could you please show us how a client uses the ToolBox ?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Of course. Only the client doesn´t use the ToolBox. The server does. For each client it has to create an RTP Header for an RTP data transfer. Which is done in my class RTPHeader.
RTPHeader::RTPHeader( int payloadType )
{
m_pLogger = Logger::GetInstance();
m_pToolbox = ToolBox::GetInstance();
m_pLogger->Out(Logger::DEBUG, "RTPHeader: Constructing Header.\n");
for( int i = 0; i < 12; i++ )
{
m_aHeader[i] = 0;
}
SetPayloadType( payloadType );
SetVersion( (BYTE) 2 );
GenerateNewSsrc();
m_bFirstGetInc = true;
PrintToConsole();
}
RTPHeader::~RTPHeader(void)
{
}
void RTPHeader::GenerateNewSsrc()
{
m_aHeader[9] = m_pToolbox->GenerateRandomByte();
m_aHeader[10] = m_pToolbox->GenerateRandomByte();
m_aHeader[11] = m_pToolbox->GenerateRandomByte();
}
.
.
.
In GenerateNewSsrc() the ToolBox´s Random Generator is used. It works nicely for this small piece of code. Only that for the next client that connects to the server it will generate the same sequence all over.
And my test output in the ToolBox class actually shows that it is indeed the rand() method that produces the same results. It´s not a variable that wasn´t cleared or such something. A new RTPHeader class object is created for every client.
Cheers
|
|
|
|
|
Is your application multi-threaded? Because the state of the random number generator is held in per-thread storage (i.e. there's a different random number state for each thread). And if each of those states is initialised the same way...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hmm .. good idea. That might be it. Though I don´t thoroughly understand it.
I indeed use multi-threading. Though there is only one object of the number generator and only one call of srand(). So each thread uses the same instance of the generator, which is actually what I intended because if srand() would be called for each worker thread (one per client), it could happen that two clients connect at the same time, get the same srand()-initialization and therewith produce the same sequence of numbers again. Right?
Souldrift
|
|
|
|
|
Souldrift wrote: Though there is only one object of the number generator and only one call of srand(). So each thread uses the same instance of the generator, which is actually what I intended because if srand()
No, no, no - each thread will have its own random number generator state - it's held inside the C run-time library (look at rand.c in the C run-time source). Even though you have one toolbox object, that's immaterial, because your object doesn't hold the random number state.
The call to srand() will only effect the thread on which the toolbox object is constructed. The other threads will get some default random number generator state initialisation.
Your best bet would be to use a different PRNG - for example, one of the implementations included in Boost[^], where (as you have full control over the PRNG including the data it uses) you could ensure that you have a single state for ALL threads. Of course, you'd then need to put a lock on the random number acquisition function (to ensure only one thread calls it at once)...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Okay. That´s good to know .
I´ll look into Boost. And sure thing about the lock ... I would have taken care of that later on, anyway.
Thanks for now
Souldrift
|
|
|
|
|
Hi Guys i am using crstal report 11.5 to print the sevral reports its working fine but suddenly it starts giving "Invalid TLV record" and then if i uninstall the crstal report and install it back it again working fine ..
any clue whats going wrong...i searched on google and find some good info but
http://forums.techarena.in/software-development/1052995.htm[^]
not able to find the root cause ..
any help will be helpful
Thanks
vikas da
|
|
|
|
|
This forum is for discussions related to C/C++/MFC.
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
right i am using MFC to print the report..
do we have any place in CP where we can discussing about ...
vikas da
|
|
|
|
|
I want to call the java dll from MFC application.
can we do this?
if yes how to do it?
Actually i have ssh dll in java,
and i want to call it from MFC.
sunny
|
|
|
|
|
|
sunnyram wrote: java dll
What is a 'java dll'?
If you have a DLL, you may call the exported functions.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
Thank you for your reply.
sunny
|
|
|
|
|
Hello all,
I am making client server application in which
1)On client side it search required update for PC then make its list and send it to server.
2)On server side it is downloading respective file for updates from its url and storing on server.
till this point I done it.
3) Now I want to install that update on client machine how should I install it, please help me.
Thank You,
ashish p.
|
|
|
|
|
Hi,
How can i capture a Message/notification from a Child control which is again a child of another window. Window->Child->Child1. My question is how can i capture Child1's message in Window?
for me Window is the parent window of the application,
Child is a tab control,
Child1 is aedit control.
Birajendu
SonicWALL
Bangalore
India
|
|
|
|
|
Get Child to re-send Child1 messages to window?
Put in a WM_NOTIFY handler for Child1 in Child and forward all of those messages to Window. Add a WM_NOTIFY handler for Child in Window. Look at the hwndFrom member of the NMHDR part of the notification message to see which window originally sent the message.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I wrote only messgae loop for parent window, can you tell me how i can incorporate message loop for child windows.
Birajendu
SonicWALL
Bangalore
India
|
|
|
|