|
Hi,
I have two classes, MainDlg.cpp, and Game.cpp . My MainDlg.cpp file is responsible for TCP communication, and it works fine on its own. I initially start MainDlg.cpp and then I start the Game.cpp class from there. Iam trying to call the DoSend() (on MainDlg.cpp) method from the Game.cpp file and it just results in a SOCKET_ERROR !
Just for experimentaion I've tried to call a method on MainDlg.cpp from Game.cpp to display a simple MessageBox and it works, so the problem is not with the class object I created.
This is how I created/call the Game.cpp object on MainDlg.cpp
Game* game = new Game;
game->Create(Game::IDD);
When the Game.cpp dialog comes up, this is how I execute the method on MainDlg.cpp:
CMainDlg* Main = new CMainDlg;
Main->GetResults();
In MainDlg.cpp :
GetResults method: <-- Works fine when run locally
void CMainDlg::GetResults()
{
Message_PDU Message;
Message.iMessageNumber = 80;
DoSend(Message);
}
DoSend Method: <-- Works fine when run locally
void CMainDlg::DoSend(Message_PDU Message)
{
int iBytesSent;
iBytesSent = send(m_iSocket, (char *) &Message, sizeof(Message_PDU), 0);
if(SOCKET_ERROR == iBytesSent)
{
MessageBox("Failed to send","Client");
}
}
Any help will be really appreciated!
|
|
|
|
|
Did your applications performed correctly the preliminary steps (i.e. there's an established connection between client and server?)?
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]
|
|
|
|
|
Yes, the connection is started and is running. On the server side I have a small counter that counts the active connections, and before/after I start the Game.cpp dialog it remains connected... =/
|
|
|
|
|
OK just for experimentation I tried to do a simple SetWindowText from the secondary class, and it resulted in a Debug Assertion error, when I debugged I got this:
void CWnd::SetWindowText(LPCTSTR lpszString)
{
ENSURE(this);
ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}
I think this problem has nothing to do with the sockets and has something to do with permissions?
Sorry I am new to C++
|
|
|
|
|
The problem is that when you do this:
CMainDlg* Main = new CMainDlg;Main->GetResults(); in your Game dialog, this creates a NEW INSTANCE of the main dialog - not the already existing one. This new one has not even done initialization of it's windows.
What you need to do is to make
CMainDlg* Main; a member variable in your Game dialog, and then change the way you create the game dialog in the main dialog to:
Game* game = new Game;
game->Main = this;
game->Create(Game::IDD); Now you'll find that Main (the member variable in your Game dialog actually points to the existing Main dialog.
Hope that helps.Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
it worked!
Karl YOU ARE A STAR!
Thank you so much!
|
|
|
|
|
Suppose there are multiple windows application opens. now I want to know the class and caption of all the open windows application . Trioum
|
|
|
|
|
|
But How Can I get the class and Caption programmatically Trioum
|
|
|
|
|
For each iterated window
you could use the GetClassName(..) and GetWindowText(..) functions virtual void BeHappy() = 0;
|
|
|
|
|
Have you tried EnumWindows() ?"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
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
loop for FindWindowEx, there is very good example of same in MSDN! "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Hi all,
i have a DLL that is created by VB,
now i want to use this in my VC++ dialog based mfc application.
please tell me how can i do this.
thanks in advance.
|
|
|
|
|
|
Le@rner wrote: i have a DLL that is created by VB,
now i want to use this in my VC++ dialog based mfc application.
if the DLL is created in VB6, then it must be exposing COM Classes, which can be easily included and programmed in VC++.
use #import compiler directive to import the dll in your program, Wizard it self generates classes based on exposed classes by VB com dll. "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
first verify your dll is COM component or simple DLL. You can verify by dependency viewer.
|
|
|
|
|
Hi all,
I am working on visual studio 2008 (VC++). i am making a dialog based application.
My problem is i have a vb dll and its lib file...
how can i use its function in my program...
Can anybody please help me in this.
thanks in advance
|
|
|
|
|
If you are working VC++ Native code then you need regular dll.
otherwise you can not load DLL in VC++ which was make another program like
|
|
|
|
|
download Dependency Walker tool and use it to determine what dll's your app is looking for.
|
|
|
|
|
Hi im trying to return char with the function but it gives error, anhy help
struct random_class {
char *crypto_buf;
void __thiscall classfunction (void *pParam);
};
random_class* pParam;
void (__thiscall* classfunction)(void *pParam );
void __thiscall myclassfunction(void *pParam )
{
classfunction(pParam->crypto_buf);
}
error C2227: left of '->crypto_buf' must point to class/struct/union/generic type
1> type is 'void *'
|
|
|
|
|
nah1337 wrote: void __thiscall myclassfunction(void *pParam )
Why did you make pParam a pointer to a void ?txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
Why do you need to use explicitely __thiscall ?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]
|
|
|
|
|
because the function that i dissasembled does have void * pointer and it is also __thiscall
Here is how the dissasembled func looks like:
void *__thiscall sub_402355(void *this)
{
void *v1;
signed int v2;
void *v3;
v3 = this;
*(_BYTE *)this = 0;
v2 = 0;
v1 = this;
do
{
sub_401462(*((_BYTE *)v3 + v2++ + 188), v1);
v1 = (char *)v1 + 2;
}
while ( v2 < 16 );
return v3;
}
|
|
|
|
|
What are you doing? Do you intend to reproduce the function behaviour in C ?
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]
|
|
|
|
|
No i want to hook the function and return the crypto char in the class.
|
|
|
|