|
Hi,
This question has been posted to other forums without success (so far).
I am not a C++ coder. I usually work with VB and occasionally C#.
I have some old cde that has a problem, and can't get a 'simple' string conversion working.
This is a COM DLL used by VB6.
The function is defined as follows:
STDMETHODIMP CParser::GetAttributeValue(BSTR strName, VARIANT strPath, BSTR *pStrVal)
The problem is that strPath is incorrect, and I need to know what it is.
Currently I have the following:
return Error("Error in GetAttributeValue. The node Path specified was not found.");
This works, but I want it to give me the path.
This does not work:
return Error("Error in GetAttributeValue. The node Path specified (" + strPath + ") was not found.");
The error is:
error C2679: binary '+' : no operator defined which takes a right-hand operand of type 'struct tagVARIANT' (or there is no acceptable conversion)
I understand it is a type conversion problem, but can't seem to get the syntax correct.
Trying something as simple as this does not work:
return Error("Error in GetAttributeValue. The node Path specified (" + _bstr_t(strPath) + ") was not found.");
error C2668: 'Error' : ambiguous call to overloaded function
Trying this also does not work:
return Error("Error in GetAttributeValue. The node Path specified (" + _bstr_t(strPath.bstrVal) + ") was not found.");
error C2668: 'Error' : ambiguous call to overloaded function
Other failures:
return Error("Error in GetAttributeValue. The node Path specified (" + BSTR(strPath.bstrVal) + ") was not found.");
error C2110: cannot add two pointers
Please help. I don't know what I have to do to fix this.
Error() is defined in COMDEF.h:
static HRESULT WINAPI Error(LPCSTR lpszDesc,
const IID& iid = GUID_NULL, HRESULT hRes = 0)
{
return AtlReportError(GetObjectCLSID(), lpszDesc, iid, hRes);
}
Apparently CstringT can be used as it allows conversion between VARIANT and other TYPEs. But how do I use it? This is Visual Studio 6. CStringT isn't included with this old compiler.
Dave
|
|
|
|
|
I believe this post is in the wrong section. It should be in ATL.
Sorry. Mods, feel free to delete.
|
|
|
|
|
If anyone wants to know, I fixed it by doing the following:
return Error(LPCSTR("Error in GetAttributeValue. The node path specified (" + _bstr_t(strPath.bstrVal) + ") was not found."));
|
|
|
|
|
I have a gsm modem sim300.
When I connect it to computer and type at or ate1 in hyperterminal the result is "OK", but when I type any other prompt like at+cpin or at+cmgs the result is "error".
Can any one Help me?
|
|
|
|
|
You have already posted this question in the C# and .NET forums where it has been answered. Please read (and reread) the guidelines on posting questions.
|
|
|
|
|
Hi
I am currently working on a new project that allows users to chat to their friends, build houses, explore, and creating characters and also to upload multimedia into the 3D world so their friends can see and listen to the media at the same time.
I need someone to please help me with it, and if you are interested could you contact me here.
Thank you.
Andrew McIntyre
|
|
|
|
|
Nobody is going to write the whole code for you. You should start yourself and if you'll have problems, then ask here.
And please read How-to-get-an-answer-to-your-question[^] before posting next time.
|
|
|
|
|
This question has been asked a number of times already.
Please read How to get an answer to your question specifically the part about not expecting other people to do the work for you. Having read your biography from the link on your home page I suspect you may not have sufficient experience to consider embarking on such an ambitious project.
|
|
|
|
|
Is there an app for checking an include headers function support ie printf scanf etc
|
|
|
|
|
Please clarify your question
Величие не Бога может быть недооценена.
|
|
|
|
|
What do you need excatly?
Of one Essence is the human race
thus has Creation put the base
One Limb impacted is sufficient
For all Others to feel the Mace
(Saadi )
|
|
|
|
|
Hello,
I'm writing/maintaining an MFC app that makes extensive use of a database API that uses std::min and std::max, which is used in most of the application's translation units. Therefore, it makes sense to include the APIs convenience header (which in turn includes everything) in stdafx.h. The API requires that I #define NOMINMAX, so that the C++ std library's min and max function templates are used, rather than MS's legacy min and max macros. I have #define'd NOMINMAX in stdaxf.h . This worked fine for a long time. However, I recently installed the MFC 2008 feature pack. I must now #include afxcontrolbars.h. However, this header has inline functions that are dependent on the min and max macros which are now missing. I tried to "#include algorithm; using std::min; using std::max;" immediately before I include afxcontrolbars.h, so that std::min and std::max would be used as drop in replacements for the macros (this has worked in other areas in the past) but stdafx.cpp still doesn't build:
1>Compiling...
1>stdafx.cpp
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtoolbar.h(166) : error C2782: 'const _Ty &std::max(const _Ty &,const _Ty &)' : template parameter '_Ty' is ambiguous
1> c:\program files\microsoft visual studio 9.0\vc\include\xutility(3356) : see declaration of 'std::max'
1> could be 'LONG'
1> or 'int'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtoolbar.h(166) : error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided
1> c:\program files\microsoft visual studio 9.0\vc\include\xutility(3364) : see declaration of 'std::max'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxmenubar.h(161) : error C2782: 'const _Ty &std::max(const _Ty &,const _Ty &)' : template parameter '_Ty' is ambiguous
1> c:\program files\microsoft visual studio 9.0\vc\include\xutility(3356) : see declaration of 'std::max'
1> could be 'LONG'
1> or 'int'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxmenubar.h(161) : error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided
1> c:\program files\microsoft visual studio 9.0\vc\include\xutility(3364) : see declaration of 'std::max'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdesktopalertwnd.h(81) : error C2782: 'const _Ty &std::max(const _Ty &,const _Ty &)' : template parameter '_Ty' is ambiguous
1> c:\program files\microsoft visual studio 9.0\vc\include\xutility(3356) : see declaration of 'std::max'
1> could be 'UINT'
1> or 'int'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdesktopalertwnd.h(81) : error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided
1> c:\program files\microsoft visual studio 9.0\vc\include\xutility(3364) : see declaration of 'std::max'
1>Build log was saved at "file://c:\Documents and Settings\User\My Documents\Visual Studio 2005\Projects\Lustre\Lustre\Debug\BuildLog.htm"
1>Lustre - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
What should I do?
Regards,
Sternocera
|
|
|
|
|
Can you do something like this:
#undef NOMINMAX
#include "afxcontrolbars.h"
#define NOMINMAX
|
|
|
|
|
Richard,
Thanks for that. I should have mentioned that that was the first thing that I tried. The result was exactly the same compiler errors as when I don't #undef:
1>------ Build started: Project: Lustre, Configuration: Debug Win32 ------
1>Compiling...
1>stdafx.cpp
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(471) : error C3861: 'min': identifier not found
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(472) : error C3861: 'min': identifier not found
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(473) : error C3861: 'max': identifier not found
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(474) : error C3861: 'max': identifier not found
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(495) : error C3861: 'max': identifier not found
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(496) : error C3861: 'max': identifier not found
1>c:\program files\microsoft sdks\windows\v6.1\include\gdiplustypes.h(497) : error C3861: 'min': identifier not found
I guess that exactly the same error message appears because stdafx.h is included in some header that is included somewhere, directly or indirectly, in gdiplustypes.h et al, which are included in afxcontrolbars.h.
Regards,
Sternocera
|
|
|
|
|
I've come up with this unfortunate hack:
#define NOMINMAX
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#include <afxcontrolbars.h>
#undef max
#undef min
When I undefined NOMINMAX, min and max were already defined, so it didn't matter. So, I've simply defined min and max just as they are defined from within WinDef.h .
Regards,
Sternocera
|
|
|
|
|
Brilliant! Not sure I would have thought of that......
|
|
|
|
|
While your hack (mentioned in another post) doesn't seem too egregious to me, another possible solution could be to add more template function overloads - I'm just showing max here:
namespace std {
template<class A>
bool max(int const& a, A const& b) { return a>b?a:b; }
template<class A>
bool max(A const& a, int const& b) { return a>b?a:b; }
}
These should take care of the cases in your header that aren't compiling with the STL min function, as (if you read the error messages) one of the types involved is always int.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi just include
#include <iostream>
#include <algorithm>
to your source file and this should be easily solved
|
|
|
|
|
No. Notice I suggested defining partially specialised templates, not the ones in <algorithm> - this is because the OPs problem was because of a template parameter deduction failure due to a mix of LONG and int parameters being passed to min/max.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
int DrawShadowText(HDC hdc,
LPCWSTR pszText,
UINT cch,
const RECT *pRect,
DWORD dwFlags,
COLORREF crText,
COLORREF crShadow,
int ixOffset,
int iyOffset
);
1. What 's "DWORD dwFlags" use for?? In MSDN document, They just tell "A DWORD that specifies how the text is to be drawn."
2. How can i align text when i use this function????
|
|
|
|
|
Maybe try the possible values for nFormat descibed here[^] (like DT_LEFT, DT_TOP, ...).
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
You can see on Adv. Win32 group [^]
(they have source code (C) for all Win32 apis...)
|
|
|
|
|
I want to draw a disabled icon. I try this:
CPoint point(10,20);
CSize size(16,16);
CBrush brush(RGB(255,0,0));
pDC->DrawState(point,size,hIcon,DST_ICON | DSS_DISABLED,&brush);
The "size" isn't correct. I want to draw 16x16, but it's alway larger. Why?? Please help me!!
If can't, help me to draw disabled icon (size 16x16)!!!
modified on Sunday, August 30, 2009 2:33 PM
|
|
|
|
|
How did you get hIcon ?
Try and use LoadImage with 16 as the cxDesired and cyDesired parameters.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
hi ... can anyone advice me how to make a graphical text editor in c++ without using microsoft foundation classes....please help
|
|
|
|