|
As far as I'm aware, you can't have method declarations in structs in IDL, never mind constructors.
|
|
|
|
|
Seeing a how IDL is interface based, a struct definition could probably contain an interface pointer. If the interface had the method tData() that's probably the nearest you will get to a function pointer.
|
|
|
|
|
Is it possible to declare a CAccessor to allow "smart binding" based on the number of columns
im trying to do something like this
class CProductoAccessor
{
public:
LONG m_ProductoID;
TCHAR m_Nome[51];
TCHAR m_Descricao[51];
DB_NUMERIC m_Preco;
float m_Iva;
TCHAR m_TipoQuantidade[51];
BEGIN_ACCESSOR_MAP(CProductoAccessor, 2)
BEGIN_ACCESSOR(0, true)
COLUMN_ENTRY_LENGTH_STATUS(1, m_ProductoID, m_dwProductoIDLength, m_dwProductoIDStatus)
COLUMN_ENTRY_LENGTH_STATUS(2, m_Nome, m_dwNomeLength, m_dwNomeStatus)
COLUMN_ENTRY_LENGTH_STATUS(3, m_Descricao, m_dwDescricaoLength, m_dwDescricaoStatus)
COLUMN_ENTRY_PS_LENGTH_STATUS(4, 19, 4, m_Preco, m_dwPrecoLength, m_dwPrecoStatus)
COLUMN_ENTRY_LENGTH_STATUS(5, m_Iva, m_dwIvaLength, m_dwIvaStatus)
COLUMN_ENTRY_LENGTH_STATUS(6, m_TipoQuantidade, m_dwTipoQuantidadeLength, m_dwTipoQuantidadeStatus)
END_ACCESSOR()
BEGIN_ACCESSOR(1, true)
COLUMN_ENTRY_LENGTH_STATUS(1, m_ProductoID, m_dwProductoIDLength, m_dwProductoIDStatus)
COLUMN_ENTRY_LENGTH_STATUS(2, m_Nome, m_dwNomeLength, m_dwNomeStatus)
END_ACCESSOR()
END_ACCESSOR_MAP()
what im trying to accomplish is something like this
CCommand < CAccessor <CProductoAccessor> > cmd;
m.Open(m_session, "Select ProductoID, Nome From table");
m.Open(m_session, "Select * From table");
|
|
|
|
|
Hi,
I've installed VS 2008 and i want to create a new ATL Webservice project.
I just downloaded the last update of ATL Server project from Codeplex.com and copied the *.h files into related directories and build the VCDeploy, SProxy and ... utilities.
But i cannot find the ATL Webservice / Server Project template in VS 2008.
Please help me what to do ?!
Regards,
|
|
|
|
|
There's no project wizard/template in the ATL Server project - probably because the one that came in VS2003 (and VS2005? I don't know) is (c) Microsoft.
Two options:- Write it from scratch yourself
- Create an ATL Server project in a version of VS that does have the ATL Server project wizard and then upgrade it into VS2008
|
|
|
|
|
Well, it is sad that there is no way to start new project from VS2008 even when ATL Web Service/Server project has been moved to open communicate (So what the ... developer group do ?!!!!!)
Ok, I've converted one of my old ATL Webservice project to VS9, but i got some errors about :
error C2337: 'request_handler' : attribute not found
error C2337: 'soap_handler' : attribute not found
fatal error C1903: unable to recover from previous error(s); stopping compilation
I googled the web and found out i should use /FX for compiling the project, but i had no luck and got same errors !
Is there anyway to solve this problem ?
(It seems it's time to dotnet ...)
|
|
|
|
|
Seems to me that the ATL server attributes have been removed from the compiler (because that's where they're implemented). Looking at the attribute references for VS2005 and VS2008 on MSDN, you can see that the ATL Server attributes have disappeared between the two releases.
What's wrong with just staying with VS2005 for building ATL Server projects? It's not like you have to be using the latest version - just look at all the people who still use (and prefer) VS6 to build MFC apps...can't for the life of me understand why they prefer VS6, but there you go.
|
|
|
|
|
Hello,
How to use the STL set in C++ in Visual Studio 2005?
thanks and regards,
Software Developer
Sanjay Khapre
|
|
|
|
|
#include <set>
#include <iostream>
int main(int, char**)
{
std::set<int> a_set;
a_set.insert(10);
a_set.insert(1);
a_set.insert(4);
a_set.insert(7);
if (a_set.find(8) != a_set.end())
std::cout << "8 is in the set" << std::endl;
else
std::cout << "8 is NOT in the set" << std::endl;
if (a_set.find(7) != a_set.end())
std::cout << "7 is in the set" << std::endl;
else
std::cout << "7 is NOT in the set" << std::endl;
a_set.erase(7);
if (a_set.find(7) != a_set.end())
std::cout << "7 is in the set" << std::endl;
else
std::cout << "7 is NOT in the set" << std::endl;
}
HTH!!!
|
|
|
|
|
Hi Experts,
I am new to COM programming. (Component Object Model.)
After learning some theory behind COM, I am wondering
Why COM when every thing is possible using DLLs which exports C++ classes.
Or
What is possible only in COM and not possible in C++ DLLs.
Could anyone explain?
Thanks in advance
cheers
Varghese Paul
|
|
|
|
|
COM is intended to be (relatively) language independent (both in terms of class implementers and users). It's designed so that component facilities are discoverable without having to know where or how they're implemented (that's where COM registration comes in).
C++ classes exported from DLLs, on the other hand, don't have those properties. The C++ class methods are exported with mangled names that vary depending on the compiler you're using, so can't be predicted without knowing how the DLL was implemented. Also - they're only DLLs. COM classes can be implemented as in-process servers (COM DLLs), out-of-process servers (COM EXEs) or even on a different machine.
Another thing - memory management. COM objects are reference-counted and use a language independent memory allocator. C++ classes? Manual memory management through the C++ allocator.
|
|
|
|
|
Varghese Paul M wrote: Why COM when every thing is possible using DLLs which exports C++ classes.
That statement is incorrect, as Stuart said. You might want to keep reading, have you seen this?[^]
led mike
|
|
|
|
|
When you write an office addin for say MS Word using ATL after you've performed all the basic steps such as implementing IDExtensibility2 and including the proper typelibs all that's left in order to handle events is to implement IDispEventSimpleImpl using the dispinterface ApplicationEvents2. Then of course you fill in the sink maps with the appropriate values for the events you wish to capture.
This is of course a gross over simplification, but my point is when you have a dispinterface such as ApplicationEvents2 at your disposal your events have ID's associated with them (e.g. 0x00000006 = DocumentBeforeClose)
There is no such convenience when working with PowerPoint. EApplication contains the events you want to handle. However EApplication inherits directly from IDISPATCH. The events do not have id's associated with them (at least not obviously).
Does anyone know how to implement a powerpoint addin using ATL that handles events?
NOTE: Before you include links from Microsofts knowledgebase make sure that the sample actually is about a powerpoint addin using ATL. I've been through many of the links, they come close but do not answer my question. I'm not using c# and I'm not writing any dialog based projects.
|
|
|
|
|
Hi,
I have a structure, i am keeping the structure in vector to store multiple elements,
my structure looks like
struct mystruct
{
id = 1;
pid= 2;
}
i used vector to store like vector<mystruct> vectStruct;
like this i have 100 elements, i need to find the elements whose pid = 2
How can i search structures in vector, how to iterate through result.
Thanks in advance
----------------------------
KRISHNA KUMAR T M
|
|
|
|
|
Use a functor for that:
struct find_pid
{
find_pid ( int pid ) : m_pid_to_find(pid) { }
bool operator() ( const mystruct& s ) const { return m_pid_to_find == s.pid; }
protected:
int m_pid_to_find;
};
vector<mystruct>::iterator i = std::find_if ( vectStruct.begin(), vectStruct.end(), find_pid(2) );
|
|
|
|
|
Hi,
Thanks for your replay,
i tried what you explained in ur replay but when i pass integer to find_pid(4)
but it is giving error like cannot convert from int to mystruct&
----------------------------
KRISHNA KUMAR T M
|
|
|
|
|
i all,
I want to create an item in the "text-selection" context menu (context = 0x10) of MS IE. I want the title of this new item to include the text selected: "MySearch <selected text...="">"
Standard menu extension procedure for MS IE:
http://msdn.microsoft.com/en-us/library/aa753589(VS.85).aspx
doesn't allow this. I have tried to find a working sample, but googling/searching through the forums for a whole day didn't help. Can you please provide me with an advice/sample?
Thank you very much in advance.
Listen up! "Teamwork" means staying out of my way! (Seifer, Final Fantasy 8).
|
|
|
|
|
Dmitry Khudorozhkov wrote: Can you please provide me with an advice/sample?
Do you have some reason to believe IE supports this? Do you have a link or something?
led mike
|
|
|
|
|
Hi all,
I've got an ATL ActiveX control which only starts correctly the second time it's loaded. The first time it's loaded the DC in the parameter of the OnDraw method cannot be used to get the window it is supposed to be associated with ie a cal to GetWindowFrom DC fails. When checked in spy++ it is clear that this is no error, there is no window being created with the control.
Does anyone have an idea why this might be the case and how to resolve it?
I'm using
XP SP2
VS2005
ATL 8.0
Thanks loads for any help
Cheers
Tom
Philosophy: The art of never getting beyond the concept of life.
Religion: Morality taking credit for the work of luck.
|
|
|
|
|
Added the following code and fixed the problem:
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite)
{
RECT rc = {0,0,0,0};
HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc);
_ASSERT (hWnd);
}
return IOleObjectImpl<cofficex>::SetClientSite (pClientSite);
}
HRESULT InPlaceActivate(LONG iVerb, const RECT* prcPosRect)
{
_ASSERT (m_spClientSite);
LPOLEINPLACESITE pInPlaceSite = NULL;
HRESULT hr = m_spClientSite->QueryInterface(IID_IOleInPlaceSite,
(void **)&pInPlaceSite);
_ASSERT (SUCCEEDED (hr) && pInPlaceSite);
HWND hParent = NULL;
hr = pInPlaceSite->GetWindow (&hParent);
_ASSERT (SUCCEEDED (hr) && hParent);
pInPlaceSite->Release ();
SetParent (hParent);
return CComControlBase::InPlaceActivate(iVerb, prcPosRect);
}
</cofficex>
Cheers
Tom
Philosophy: The art of never getting beyond the concept of life.
Religion: Morality taking credit for the work of luck.
|
|
|
|
|
what's win32 version of rand, srand ?
tnx
|
|
|
|
|
rand and srand are part of the CRT, you can call them in a Windows program with no problem (assuming you're using the CRT, of course).
If you can't use the CRT, one option is to use the WinCrypt library. Check out CryptGenRandom()
|
|
|
|
|
I have created an Aggregate COM.
How to use the Aggregate COM object in client application?
|
|
|
|
|
Hi i am new to ATL. I need to create a Acivetx control which does some arithmatic operation?. please help.
|
|
|
|
|
I'd suggest learning how to use ATL. There were lots of books available that would you could learn ATL programming from, not so many now that .NET is the popular option. However, Microsft's documentation is pretty good, and there's plenty of information on the internet.
Aside from that - there's no short-cut. You have to learn about the technology you're going to use.
|
|
|
|