|
I don't have one now, but for sure there are a number in MSDN samples and Platform SDK (try the older ones if you can spot some copies - the newer MSDN/PSDK seems to be more .NET oriented than API oriented).
CP also may have tree view samples as well.
I remember a sample containing almost all common controls, showing messages, notifications etc. - I don't remember the name now, was something with the solar system's planets in a listview. Check in MSDN, it won't be too hard to locate it and contains almost all you need to know. And more.
|
|
|
|
|
Hi all,
I am trying to make a chat server and client, for which I am inheriting the MFC CAsyncSocket. But the class member called Connect() is not properly responding. It shuld return nonzero value when connection succeeds and 0 if fails.But, it always returns zero,even when the connection succeeds.If the server is not listening, then also connection succeeds, but GetSockName() gives IpAddress=0.0.0.0, not the one which we specify for connecting. If server is listening, then the Ip Address which GetSockName() gives is correct.
I even tried with GetLastError() but it always returns a value 10035 even if the server is listening or not.
Please help me by providing a way to identify whether connection is success or failure..
thanks in advance...
SYAMLAL
|
|
|
|
|
SyamlalS wrote: it always returns zero,even when the connection succeeds
It returns 0 means , connection is not succesful. How you know that it is succesful ?
SyamlalS wrote: If the server is not listening, then also connection succeeds,
How you are deciding it, as 0 return value is for failure.
SyamlalS wrote: but it always returns a value 10035 even if the server is listening or not.
error code 10035 can be read as "A non-blocking socket operation could not be completed immediately."
|
|
|
|
|
hi prasad,
sorry for the delay in sending this reply
It returns 0 means , connection is not succesful. How you know that it is succesful ?
the connection becomes successful when the server is listening( return value is 0 ), I can identify this, since the data send from server side(after connecting) reaches at client and vice versa.
How you are deciding it, as 0 return value is for failure.
Even if the server is not listening, it connects, I identified this since the OnConnect() which I have overrided gets invoked.
error code 10035 can be read as "A non-blocking socket operation could not be completed immediately."
That means the non blocking connection is possible, but it will take time
Am I right??
SYAMLAL
|
|
|
|
|
SyamlalS wrote: the connection becomes successful when the server is listening( return value is 0 ),
But as connect is returning 0, its failing.
SyamlalS wrote: Even if the server is not listening, it connects, I identified this since the OnConnect() which I have overrided gets invoked.
It will get called, for every connect called, but important thing is it should succeed. Which is not, in you case, I guess.
SyamlalS wrote: That means the non blocking connection is possible, but it will take time
No.
|
|
|
|
|
status= connect(this->m_Socket,(sockaddr *)m_TargetSystem,sizeof m_TargetSystem));
if(status==SOCKET_ERROR)
{
int Error= this->GetPrevError();
}
else
{
// Your socket got connected...
}
haribabu
(impossible to understand)
|
|
|
|
|
if (!MyAsyncSocket.Connect(...))
{
int SockError = GetLastError();
if (SockError == WSAEWOULDBLOCK)
{
}
else
{
}
}
Call GetSockName() in OnConnect() if successful. Since you are getting WSAEWOULDBLOCK error
then the socket is not yet connected right after the call to Connect().
|
|
|
|
|
Hi All,
OpenFileMapping Fails with GetLastError() error code 2, i.e. ERROR_FILE_NOT_FOUND .
The problem is not frequent. It only occurs after few days of product being in production...Any help on this will be highly appreciated.
Thanks
Suraj Gupta
|
|
|
|
|
Gupta Suraj wrote: Fails with GetLastError() error code 2, i.e. ERROR_FILE_NOT_FOUND.
Problem may not be with this function. As error suggests , its not getting mapping object. Which may not be created in first place.
Like , CreateFileMapping may have failed already.
|
|
|
|
|
Thanks for reply!
Yes, this could be one of the possibilities. I m working in that direction. Their is another direction to this, i.e. Can the error returned by OpenFileMapping can be misleading?
Suraj Gupta
|
|
|
|
|
Gupta Suraj wrote: .e. Can the error returned by OpenFileMapping can be misleading?
Very unlikely. This API is there for such a long period. Could have caught any such failure already(and fixed).
In short, very unlikely.
|
|
|
|
|
Hi,
I hv made an application using win32, heavy graphics r involved in my project...im facing difficulty displaying the dialog box n msg box..since it is not getin displayed on the leftmouse event at the first time..i-e i want that when i click the leftmouse button at some specific event a dialogbox shud appear...but when i click the mouse button dialogbox aint getin appeared as it goes at the back of my application..may b coz os aint givin it the control, n i hv to go to taskmanager n enable the dialogbox....so if some1 can find a cure for for this ill b extremely thankful....or tel me an alterante to get the user input..
Thnx
|
|
|
|
|
Can you show code ?
ooolz wrote: ...but when i click the mouse button dialogbox aint getin appeared as it goes at the back of my application
Does SetWindowPos help ?
|
|
|
|
|
the code is too large to b attached
|
|
|
|
|
What about my second question ?
You can atleast show how you are invoking dialog box.
|
|
|
|
|
I'm sorry about my mistake 2days ago... cause that is the first time I race on this site. At firts, thanks for replying to my topic.
And now, I introduce about what I've done...
#include
#include
class cspell{
char* mean;// word's meaning
char* warray[12];//warray which is an array include words
public:
void init();//initializing
void check(char*);// check spell
void set(char* m);//add a word to dictionary database
};
I have built this class. And I have met some errors while I setup 3 behaviours(init , check, set).
I want to initialize warray's member... but I can't.
And this...
void check(char* word){
for( int i = 0; i if (strcmp(warray[i], word)==0) {
cout << word;
cout << "Good word.\n";
}
};
And I want to build word's meaning... But I don't know the method...
Do you know about my idea?...
I want to compare a word and a member of warray. But an error appeared.
"Set" behaviour is so hard... Please help me to built this class and its behaviours... Thanks for reading and replying.
My mind is too bad... I have learn this language 2 months ago by myself.
Try to find how to die
|
|
|
|
|
I'm not sure you asked about dictionary but I think we have article about dictionary on codeproject and also use of Ingnore html when want to send a code
|
|
|
|
|
It seems that <valarray> is incompatible with the MFC,
by searching the google I found it may work to #undefine
min(), max(). Is there any alternative to solve this problem?
Thanks!
|
|
|
|
|
ytod wrote: '06
It seems that <valarray> is incompatible with the MFC
What do you mean by incompatible ? Do you get any errors ?
ytod wrote: Is there any alternative to solve this problem?
If you are getting compilation errors, make include statement for valarray as first statement in stdafx.h .
|
|
|
|
|
I'm finding templates a bit hard to understand. I do understand some simple ones, but not everything. I looked at a sample program that finds max of two numbers and returns the bigger number. People say templates are generic but why not it take std::string into the function that finds of Max of two types(now it takes only numbers) We know that it's not sane to try "<" between strings but how does the compiler find the passed values are strings and reject it? and btw, how an STL container gets in anything we push? may it be numbers or strings, for example a vector. Can someone make a simple template program that just "holds" Object of any type, I just want to break the template barrier.
<br />
Box <int> box_int; box_int.hold(1);<br />
Box <std::string> box_str; box_str.hold("Astricks");<br />
Box <myClass> box_obj; box_obj.hold(myObj);<br />
Any help? Plz note: It's not a homework or assignement.
|
|
|
|
|
std::max() works just fine with std::string , and operator < has a well-defined meaning for strings.
|
|
|
|
|
(1) Maybe you are expecting to much from templates. They are just a blueprint for the compiler, how to make functions or classes using the same code for different types.
(2) It *is* sane to use "<" to compare std::string - it overloads operator <
What you mean is probably that < doesn't do a string comparison for char * - and in this case, you are right: the "normal" min() template won't work
template <typename T> T const & min(T const & a, T const & b) { return (a<b) ? a : b; }
This template works for all types that implement a "sensible" operator < . It is generic for all typesthat fulfil this template parameter restriction
In C++ you can even provide a specific implementaiton of a template function for a specific type. This is called template specialization:
<br />
template<><br />
char const * min(char const * a, char const * b)<br />
{<br />
return strcmp(a,b) < 0;<br />
}<br />
(Note: this isn't a recommended solution for the problem at hand, but an illustration of template specialization)
The template saves you from writing the same min function for dozens (or thousads) of types. It does not save you from defining what "min" actually means in terms of C++
(3) Generally, writing correct templates is hard, because you have to be very precise about your template argument restrictions, and you have to keep "all" types in mind.
Used correctly, templates avoid a lot of repetetive code, and are fairly simple to use.
(4) What you ask is simple, but probably not what you want:
template <typename T>
class Box
{
T m_value;
public:
Box(T const & value) : m_value(value) {}
T const & get_value() const { retrun m_value; }
}
However, you haven't broken any "template barrier": Box<string> is a completely different type from Box<int> there is no Box type that can hold both (Box is just a template for types, not a type by itself)
What you want isn't simple. boost::any[^] implements a container type that can hold all kinds of types.
(5) Try to read more[^] on templates, try to understand the common ground that these tutorials cover.
Good luck!
Developers, Developers, Developers, Developers, Developers, Developers, Velopers, Develprs, Developers! We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP Linkify!|Fold With Us!
|
|
|
|
|
Thank you so much perterchen, Now I will sit on work on your explanation . Thanks a lot
|
|
|
|
|
Your example was so nice, realy useful. thanks a lot man. And I tried another simple thing, but why do I get this error peter?
template<class T> class Key
{
T k;
T* kptr;
int length;
public:
Key(T);
};
void main()
{
Key < int > i;
}
: error C2512: 'Key<int>' : no appropriate default constructor available
*
|
|
|
|
|
If a coworker asked me that, I'd start with a "questions" game: What does the compiler say? Where does it saay that? etc. - you could work this out yourself
since you declare Key(T), the default constructor Key() is not generated automatically.
Developers, Developers, Developers, Developers, Developers, Developers, Velopers, Develprs, Developers! We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP Linkify!|Fold With Us!
|
|
|
|
|