|
i wonder if someone can help me with the creaion of a COM object. I am trying to
I am trying to create an object of CDOMessage but am failing at the 1st hurdle.
Firstly, information about the COM object can be found here.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/c138a402-4842-4bb3-988e-43cb9917e94b.asp
At the bottom of the page the example has VB and C++ mixed in one but the c++ example looks like this:
<br />
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only<br />
#import <cdosys.dll> no_namespace raw_interfaces_only<br />
#include <cdosysstr.h>
#include <iostream.h><br />
<br />
main(){<br />
CoInitialize(NULL);
IMessage* pMsg = NULL;<br />
<br />
HRESULT hr = CoCreateInstance(__uuidof(Message),<br />
NULL,<br />
CLSCTX_INPROC_SERVER,<br />
__uuidof(IMessage),<br />
reinterpret_cast<void**>(&pMsg));<br />
However when i try to compile the above code i get the error:
Error 1 error C2065: 'IMessage' : undeclared identifier c:\c++localprojects\cdomessage\cdomessage\cdomessagedlg.cpp 103
Now if i fire up OLE/COM Viewer that you get with Visual Studio and do a search in "All Objects" for CDOMessage i find
that it is all registered ok with my system.
notice in the example above __uuidof & __uuidof is being used. I have not come across these before so went about calling
CoCreateInstance the normal way passing interface id's and class id's
for example here is a call from a com intro article here on cp: http://www.codeproject.com/com/comintro.asp
<br />
HRESULT hr;<br />
IShellLink* pISL; <br />
<br />
hr = CoCreateInstance ( CLSID_ShellLink,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink,
(void**) &pISL );
Now for me to create a CDOMessage COM object i need know:
1) the CLSID of the coclass
2) the IID (interfaceid)
3) an interface pointer
however using OLE/COM Viewer the CLSID is {CD000001-8B95-11D1-82DB-00C04FB1625D} instead of a readable form like CLSID_ShellLink.
Is it ok for me to just pass through CD000001-8B95-11D1-82DB-00C04FB1625D?? Secondly, OLE/COM Viewer does not show me the IID for me
to pass through.. And finally what interface pointer should i use?
|
|
|
|
|
flippydeflippydebop wrote: Error 1 error C2065: 'IMessage' : undeclared identifier
this compiles without error for me. Are you sure there is not a previous error about not finding a file or something?
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only
#import <cdosys.dll> no_namespace raw_interfaces_only
#include <cdosysstr.h>
class CDOTest
{
CDOTest()
{
IMessage* pMsg;
HRESULT hr = CoCreateInstance(__uuidof(Message),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IMessage),
reinterpret_cast<void**>(&pMsg)); }
};
"Alot of the people on this forum are incredibly stupid, thinking that the internet is real" Score: 1.0 in the Soap Box
led mike
|
|
|
|
|
hello and thanks for your reply.
hmm!! well i have just tried this in a fresh project in visual studio 6 and it gave me an error when #including <cdosysstr.h>.. I commented out this line and all compiles well.
My original project i was was sont in Visual Studio 2005. So my rub here is that it doesnt compile using VS2005.
Using VS2005 it it does not complain when i #include <cdosysstr.h> but gives me the error msg:
Error 1 error C2065: 'IMessage' : undeclared identifier
what version of C++ did you use in your sample?
|
|
|
|
|
flippydeflippydebop wrote: So my rub here is that it doesnt compile using VS2005.
I used VS2005.
led mike
|
|
|
|
|
well the only thing i can think is that i have got issues with path includes maybe... back to the drawing board!
|
|
|
|
|
hiya again... just looking at this again today..
can i ask, in your working vestion is your HRESULT equal to OK. My visual studio 6 sample
is compiling ok but when it runs it doesnt successfully create an instance of the object
and the pMsg pointer is equal to NULL.
HRESULT hr = CoCreateInstance(__uuidof(Message),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IMessage),
reinterpret_cast<void**>(&pMsg));
assert(SUCCEEDED(hr));
Also i have noticed that in OleViewer when i try to expand CDOMessage oleview simply closes
down as if it has encountered an error
|
|
|
|
|
flippydeflippydebop wrote: in your working vestion is your HRESULT equal to OK
Yes.flippydeflippydebop wrote: oleview simply closes
down as if it has encountered an error
Sound like you might have an environment problem. Check the Event Logs for any messages related to the shutdown of OleViewer.
led mike
|
|
|
|
|
|
Is there anybody knowns where was IE's "Manage Add-ons" dialog implemented?
I can't find it in shdocvw.dll,shlwapi.dll,iexplorer.exe........
where is it?
|
|
|
|
|
Hi all,
In one of my applications, the user gets a modal dialog box, in which he enters some information. In order to support him in diong that, I also display a modeless dialog with some additional information. (CDialog::Create (IDD_TEMPLATE, NULL)). The order is: first initialize the modeless dialog, then call the DoModal for the modal dialog. However, the user is now not able to move or resize the modeless dialog or to put it on top of the modal dialog to diaplsy all the information, until the modal dialog closes.
It would of course be possible to also use a modeless dialog for the second dialog box, but then I need to loop for the user to push the OK (or Cancel) button, and I would possible need to do a whole lot of other things that Windows is now handeling for me.
How can I create the modeless dialog so that it will act as if it were another application (in the sense that I can move it, put it on top of others, etc)
Anyone any suggestions please?
Thanks in advance,
William
|
|
|
|
|
Create the modeless dialog within the modal dialog's OnInitDialog() method.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Thanks, I'll try that.
Regards,
WIlliam
|
|
|
|
|
I add some Strings in a ListBox. Now I want change the Color of some Letters in the ListBox. It is possible? Can someone help me? Thanks
|
|
|
|
|
|
the hole String in one Line to make in a different color is no problem.
I want to insert something like: "S 04 A....X" in my Listbox
and S should be green A should be Red and X should be Yellow, the rest should be Black.
Thx
|
|
|
|
|
There is no builtin functionality that does that. You will need to make an ownerdraw list box. drax_0815 gave an example how to do that.
John
|
|
|
|
|
Do you want to set color for each character?
|
|
|
|
|
|
I dont know why you want to use it anyway its possible but you need to a little work:
1-you need to derived CListBox and declare WM_DRAWITEM on it (if you dont know how to use it you can see previous links)
2- On WM_DRAWIEM when you want to write items with TextOut or DrawText you must declare a loop
for each item for example you have three items on your listbox "one" "two" "three"
you get your string and when you want to show these items you need to a loop like this
for(int i=0;i<m_Str.GetLength();i++)
{<br />
SetTextColor(RGB(0,0,120));
pDC->TextOut(you need to calculate x,you need to calculate y, m_str[i]); <br />
<br />
}<br />
|
|
|
|
|
All I can say is, that you have to set your listbox to ownerdraw.
(fixed) if all listbox items have the same height an width.
Then you have to handle inside the message loop the MeasureItem and the WM_DRAWITEM
messages:
<br />
case WM_MEASUREITEM: <br />
<br />
lpmis = (LPMEASUREITEMSTRUCT) lParam; <br />
<br />
lpmis->itemHeight = 18; <br />
return TRUE; <br />
<br />
case WM_DRAWITEM: <br />
In the WM_DRAWITEM case you have to implement the tricky part (adding the text in different colors)
May a little help for google search.
|
|
|
|
|
I have developed a solution that has Help files and about 12 dialogs. The application is a MFC C++ 2005 Net based program.
Now I want to copy this and modify it for a new similar application. The original is not generic enough at present.
My question is (each time I have done this before, its been a fight to get all the name references corect). I would like all the main files (.cpp and .h) to take the name of the new application; e.g. Current solution is called ABC_123 and would like the new application to be QWERTY_123. The classes and other files are OK; its just the Main. I can change the diaglog titles etc, but also the Help needs to change?
How or what is the best way to rename the items in this solution?
Cheers,
Andy.
|
|
|
|
|
Is this[^] helpful for you
|
|
|
|
|
I have a audio file. I wanto to add a wave format header to it.
How can i do this? Please help.
Thnak you
KIRAN PINJARLA
|
|
|
|
|
I saw an article for this purpose on codeproject but its C#
|
|
|
|
|
I want to display a Message box to the user for some time only without waiting for its reponse i wish to move ahead
How to achieve this . Please help me out
|
|
|
|