|
Mario M. wrote:
cannot convert from 'NETRESOURCE *' to 'std::vector<_Ty,_Ax>::_Tptr
Misuse of STL?
Peace!
-=- James.
|
|
|
|
|
My first guess is someone tried to return an iterator from a function that wants to return a pointer, which VC6 probably would be more likely to let you get away with.
As has been said, it is kind of pointless asking these questions if you're not going to post some code.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
Hi,
You can find the complete source code project here http://www.codeproject.com/dialog/selectcomputerdialog.asp
Mario
|
|
|
|
|
I'm not going to reboot into W2000, run .Net ( which I still don't know my way around ), reboot again, redial the internet, when you can just post the offending line of source yourself.
To be honest, if it wasn't that much hassle, I would do it gladly, although I still think you should have posted the source that is crashing, but to test under .Net is simply too much hassle for me.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
The error comes from the first line here...
----
vector <CNETRESOURCE> vecnrDomains;
if (!EnumDomains(NULL, vecnrDomains))
return false;
for (vector<CNETRESOURCE>::const_iterator ci = vecnrDomains.begin();
ci != vecnrDomains.end(); ++ci)
vecstrDomains.push_back(ci->GetRemoteName());
------
I am not the author of these sources, someone else posted it to codeguru.com, and it works fine with VC++ 6.
-
Mario
|
|
|
|
|
Mario M. wrote:
The error comes from the first line here...
----
vector vecnrDomains;
if (!EnumDomains(NULL, vecnrDomains))
return false;
for (vector::const_iterator ci = vecnrDomains.begin();
ci != vecnrDomains.end(); ++ci)
vecstrDomains.push_back(ci->GetRemoteName());
------
You mean declaring the vector ? Your <> pairs were lost because you didn't post 'as-is' ( see the check box below as you're typing your post ), but whatever is in the vector: does it have a copy constructor ?
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
I have modified the post to 'as-is'. And here is the vector class...
also you can read again the previous message with 'as-is'...
class CSelectComputerNetwork
{
public:
CSelectComputerNetwork();
virtual ~CSelectComputerNetwork();
public:
static bool GetDomains(vector<basic_string<TCHAR> >& vecstrDomains);
static bool GetServers(const basic_string<TCHAR>& strDomain, vector<basic_string<TCHAR> >& vecstrServers);
private:
//NETRESOURCE structure wrapper used to save text data that freed by WNetEnumClose(_);
class CNETRESOURCE
{
public:
CNETRESOURCE(const NETRESOURCE& nr):
m_nr(nr)
{
m_strLocalName = nr.lpLocalName ? nr.lpLocalName : _T("");
m_strRemoteName = nr.lpRemoteName ? nr.lpRemoteName : _T("");
m_strComment = nr.lpComment ? nr.lpComment : _T("");
m_strProvider = nr.lpProvider ? nr.lpProvider : _T("");
m_nr.lpLocalName = new TCHAR [m_strLocalName.size() + 1];
_tcscpy(m_nr.lpLocalName, m_strLocalName.c_str());
m_nr.lpRemoteName = new TCHAR [m_strRemoteName.size() + 1];
_tcscpy(m_nr.lpRemoteName, m_strRemoteName.c_str());
m_nr.lpComment = new TCHAR [m_strComment.size() + 1];
_tcscpy(m_nr.lpComment, m_strComment.c_str());
m_nr.lpProvider = new TCHAR [m_strProvider.size() + 1];
_tcscpy(m_nr.lpProvider, m_strProvider.c_str());
}
CNETRESOURCE(const CNETRESOURCE& rhs):
m_nr(rhs.m_nr),
m_strLocalName(rhs.m_strLocalName),
m_strRemoteName(rhs.m_strRemoteName),
m_strComment(rhs.m_strComment),
m_strProvider(rhs.m_strProvider)
{
m_nr.lpLocalName = new TCHAR [m_strLocalName.size() + 1];
_tcscpy(m_nr.lpLocalName, m_strLocalName.c_str());
m_nr.lpRemoteName = new TCHAR [m_strRemoteName.size() + 1];
_tcscpy(m_nr.lpRemoteName, m_strRemoteName.c_str());
m_nr.lpComment = new TCHAR [m_strComment.size() + 1];
_tcscpy(m_nr.lpComment, m_strComment.c_str());
m_nr.lpProvider = new TCHAR [m_strProvider.size() + 1];
_tcscpy(m_nr.lpProvider, m_strProvider.c_str());
}
~CNETRESOURCE()
{
delete [] m_nr.lpLocalName;
delete [] m_nr.lpRemoteName;
delete [] m_nr.lpComment;
delete [] m_nr.lpProvider;
}
public:
NETRESOURCE* operator &()
{
return &m_nr;
}
operator NETRESOURCE() const
{
return m_nr;
}
void CorrectRemoteName()
{
m_strRemoteName = m_strRemoteName.substr(2);//skip 2 leading slashes
delete [] m_nr.lpRemoteName;
m_nr.lpRemoteName = new TCHAR [m_strRemoteName.size() + 1];
_tcscpy(m_nr.lpRemoteName, m_strRemoteName.c_str());
}
basic_string<TCHAR> GetRemoteName() const
{
return m_strRemoteName;
}
private:
NETRESOURCE m_nr;
private:
basic_string<TCHAR> m_strLocalName;
basic_string<TCHAR> m_strRemoteName;
basic_string<TCHAR> m_strComment;
basic_string<TCHAR> m_strProvider;
};
//NETRESOURCE structure wrapper
private:
static bool EnumDomains(NETRESOURCE* pnr, vector<CNETRESOURCE>& vecnrDomains);
static bool EnumServers(NETRESOURCE* pnr, vector<CNETRESOURCE>& vecnrServers);
};
|
|
|
|
|
If it's a vector of CNETRESOURCE, then maybe the problem is absence of operator NETRESOURCE in CNETRESOURCE, but to be honest, I'm guessing because I can't test it.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Sonork ID 100.10002:MeanManOzI live in Bob's HungOut now
|
|
|
|
|
CNETRESOURCE does have an operator NETRESOURCE...
else it would not compile in VC++ 6.0
Thanks for your time.
-
Mario
|
|
|
|
|
The two NETRESOURCE operators need to be removed. They will cause all sorts of problems with standard STLs
NETRESOURCE* operator &()
{
return &m_nr;
}
operator NETRESOURCE() const
{
return m_nr;
}
Specificall,y the operator & is causing the problems. The & operator is used heavily in standard STL. When STL applies the & operator, it is expecting a reference to the class, not a NETRESOURCE *, thus the problem.
Tim Smith
Descartes Systems Sciences, Inc.
|
|
|
|
|
Thanks! , this removes the error, but now I have to find something to replace the operator, since I get this error...
SelectComputerNetwork.cpp(58) : error C2664: 'CSelectComputerNetwork::EnumServers' : cannot convert parameter 1 from 'CSelectComputerNetwork::CNETRESOURCE *' to 'NETRESOURCE *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
-
Mario
|
|
|
|
|
Just make a new routine to get that resource. IMHO, I don't understand why NETRESOURCE was made private when the operator & provided unrestricted access to the member. I would just make NETRESOURCE public and be done with it.
Tim Smith
Descartes Systems Sciences, Inc.
|
|
|
|
|
I will try to make a new routine to get NETRESOURCE, I also made NETRESOURCE & CNETRESOURCE public, but I get the same error...
Thanks for your time.
|
|
|
|
|
Yeah, all you will have to do is change those (*ix) to something like (*ix) .m_nr or (*ix) .GetNetResource ().
Tim Smith
Descartes Systems Sciences, Inc.
|
|
|
|
|
Can you give any suggestions on how to keep the proportion of the screen the same irrespective of the screen resolution. i.e. Visual Studio workspace appears the same whether you are using 800x640 or 1280x1024.
I am using both dialogs and document views in my program and want them to look the same amongst different users.
Many Thanks
James P
|
|
|
|
|
James,
I don't know what you mean by "keep the proportion of the screen the same irrespective of the screen resolution". And actually, DevStudio does not appear the same when you change resolutions. If you have it at 800x600, things like fonts, buttons, menus, dialog boxes, etc. look larger than when you switch over the 1024x768. This is not a bad thing - the higher the resolution, the smaller everything looks but the more real estate you have. That's normal behavior.
What I usually do is make my larger dialog boxes fit perfectly inside the smallest allowable resolution (ie., 800x600). This makes them look fine at the higher resolutions.
Regards,
Alvaro
|
|
|
|
|
Today I went to go add a bookmark to one of my files and I was shocked to see tons of bookmarks that I did not create. They pointed to source files in directories that I don't even have. I download a lot of free source code from this site and others. When you open a project that someone else created does it add their bookmarks to yours?
Cathy
Life's uncertain, have dessert first!
|
|
|
|
|
It's common that I share my Files and Projects with co-workers. Several times happen me that you comment. Specially when I open other projects. But sometimes....
Regards!!!
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Thanks!
I think that was a bad design.
(I added your Sonork ID)
Cathy
Life's uncertain, have dessert first!
|
|
|
|
|
I have a dialog application, call it dialog "A". It can launch a modal dialog, dialog "B". The modal dialog can launch a modeless dialog "C" that is owned by the main application dialog (A).
Because C is modeless and owned by A, You can close dialog B and still have dialog C available. (and you can then re-open B, etc).
I want to be able to send a WM_COMMAND message from the modeless dialog C to the main dialog, A. I have a pointer to A, so calling PostMessage to post the message is no problem. The problem is this: when dialog B is up (which is modal, owned by A), the message from C doesn't get to A, because B, being modal, is eating all the messages.
What should happen is this: A, B and C are all up. C Posts a message that causes B to close and A to do something. How can I do this??
-c
Smaller Animals Software, Inc.
|
|
|
|
|
You may need to do thi with 2 messages - a WM_CLOSE to close B and then the message to A.
Alternatively, seeing you know this is a 'special' message you could filter it in the PreTranslateMessage function of the dialog(s). If the message always goes directly to B, the filter could pass it on to A and get B to suicide.
Happy programming!!
|
|
|
|
|
I would have dlg B post (relay) the message to dlg A before closing. Of course, you'd have to have the CWnd of dlg A in order to do so...
A knows about B, but does it know about C, or does only B know about C?
You could create a CTypedPtrArray of CWnd and store all of the dialogs' CWnd*'s in it, and either make it a global array or pass it in the constructors from one dlg to the next, and have each dialog add it's own CWnd* to it as it goes. Then, you could post the message to the desired CWnd*'s.
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
A owns both B and C. C knows about A and B knows about A (A is their parent). C doesn't know anything about B, though i guess i could hack up something that would make it available.
what a mess
-c
Smaller Animals Software, Inc.
|
|
|
|
|
If A knows about both B and C, and if you want something to happen in B if C closes, just Have C post a message to A to indicate that C is closing, andf have A post a message to B that tells B that C has closed and B can react accordingly...
Sounds like you already have everything you need.
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
I'm capturing frames from a live video stream and every once in a while, I'll get a black and white image instead of color. Can anyone tell me what I might be doing to cause such a thing to happen?
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|