|
hi
how to create an ATL class which is derived from IDIspEventImpl interface???
"Every morning I go through Forbes list of 40 richest people in the world. If my name is not in there, I go to work..!!!"
|
|
|
|
|
1. Add IDispEventImpl as a base class
class CAboutDlg: public CAxDialogImpl<CAboutDlg>,
public IDispEventImpl<IDC_ABOUT, CAboutDlg, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>
2. Add a sink map to the class
BEGIN_SINK_MAP(CAboutDlg)
SINK_ENTRY_EX(IDC_ABOUT, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
END_SINK_MAP()
3. Implement the event handler - this is the implementation, you obviously need a corresponding declaration in the class.
void __stdcall CAboutDlg::OnDocumentComplete(IDispatch* pDisp, VARIANT * URL)
{
Do Stuff Here
}
This is from actual working code - a dialog that embeds HTML display using IE.
HTH!
|
|
|
|
|
We are a Software Development Company based in India and we are looking for experienced C++ ATL WTL developers to work as freelancers on our client's projects. The projects will be basically to develop BHO's and Toolbars for Internet Explorer.
Interested Persons can submit thier proposals to us at http://www.kbscript.com/contact.php
You should be an experienced developer in C++ with ATL/WTL in order to be selected.
Please answer the questions below mentioned with your proposal.
1) What is your experience level? (Intermediate or Expert)
2) How much experience you have int he programming of Toolbars and BHO's?
3) Why do you think you the best choice?
4) What are your hourly rates?
5) Would you like to be paid on "Per Hour Basis" or "Per Project Basis"?
6) Any relevant examples of your previous work realted the "toolbars" and "BHO's"?
7) Your present job and work areas?
So, Good Luck and hope to work with you soon.
Good Luck,
Ajay Chadha
|
|
|
|
|
you've got a job advertsisement ?
post it here[^]...
|
|
|
|
|
Has anyone tried compiling a VC6 MFC application using the VC7.1 compiler?
I followed this simple article on making VC6 to use the VC7.1 compiler.
http://pixwiki.bafsoft.com/wiki/index.php/Using_the_Optimizing_VC7_Compiler_with_the_VC6_IDE
Then all the errors I've been getting have been from the actual C:\Program
Files\Microsoft Visual Studio\VC98\MFC\Include\ folder (loads of template
syntax errors).
Surely Microsoft must've made a portability/conversion for VC6 MFC to be
used under VC7.1?
|
|
|
|
|
Doesn't surprise me - templates is the area where VC7.1 scores highest over VC6, in that it's nearly completely compliant with the C++ Standard, rather than being a not great attempt to be compliant with a draft standard (which was all that was around when VC6 was developed).
Let me guess - have you had to add/remove lots of 'typename' keywords? That's probably the biggest difference - VC6 will assume that dependent names are types, which isn't standard compliant. So, in this example from afxtempl.h (I compiled it with VC8)
<code>template<class TYPE, class ARG_TYPE>
CList<TYPE, ARG_TYPE>::CNode*
CList<TYPE, ARG_TYPE>::NewNode(CList::CNode* pPrev, CList::CNode* pNext)
{
... some more code ...
</code>
VC6 will assume CList<TYPE, ARG_TYPE>::CNode is a type, but VC7.1+ won't...because it might not be. You need to put typename CList<TYPE, ARG_TYPE>::CNode to tell the compiler that you are making a guarantee that it's a type.
Anyway - I'd suggest that you're out of luck - you should be OK compiling console and simple Win32 programs, but MFC and ATL programs require a match between compiler and library. That's the portability between VC6 and VC7.1 - you recompile you MFC programs with thea correct compiler/library match.
|
|
|
|
|
Hi All,
Can anyone tell me if there is an easy way to add 2 vectors?
Thanks and Regards,
Anil
|
|
|
|
|
std::vector<myType> v1;
std::vector<myType> v2;
for (std::vector<myType>::iterator
iter = v2.begin();
iter != v2.end();
iter++) {
v1.push_back(*iter);
}
|
|
|
|
|
|
Or without an explicit loop:
std::vector<myType> v1;
std::vector<myType> v2;
std::copy(v2.begin(), v2.end(), std::back_inserter(v1));
This code assumes:
#include <vector>
#include <algorithm>
#include <iterator>
Steve
|
|
|
|
|
If you mean make a third vector by summing two other vectors? If yes this code will do it:
vector<int> v1, v2, vout;
ASSERT(v2.size()>=v1.size());
transform(v1.begin(), v1.end(), v2.begin(), back_inserter(vout), plus());
This code assums the following:
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
using namespace std;
Steve
|
|
|
|
|
Are the pixels in the RGBQUAD array stored from top left to bottom right of the image. I am trying to test sections of an image for color and I need to know how the pixels are stored.
For example:
bi->bmiColors[0].rgbBlue is the top left pixel and bi->bmiColors[lastindexvalue].rgbBlue is the bottom right pixel
Is that correct?
|
|
|
|
|
Yes that is where those pixels would be stored, provided the array was loaded properly. But working with images is usualy more complicated than that, it depends on the format of the image and who is filling the array.
INTP
Every thing is relative...
|
|
|
|
|
|
i have an activex control.
when i place it on a webpage like this
<OBJECT id="myObj" codebase="myObj.CAB#version=1,0,5,0" classid="clsid:57F..." border="0" height="514" width="655">
and in Javascript i write a func
myObj.OnSave();
it works perfectly, OnSave function is called successfully
but if i embed the same control on either VB or VC the OnSave function is not in the exported list at all
Not even in the object browser
so i tried
CString szStr("OnSave");
IDispatch *pObj;
pUnk->QueryInterface(IID_IDispatch,(void**)&pObj);
DISPID FuncID;
OLECHAR FAR* szMember = szStr.AllocSysString();
HRESULT hr = pObj->GetIDsOfNames(IID_NULL,&szMember,1,LOCALE_SYSTEM_DEFAULT,&FuncID);
::SysFreeString(szMember);
this also return DISP_E_UNKNOWNNAME
i am stumped the control is same then why this kind of stuff
can anyone shed more light on this
The control is not written by me and i cannot contact the guy who did wrote it
please help
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
i have a (Video Player like) activex control that is embedded on an IE window which in turn is embedded on my CDialog is there any way by which i can get the HWND of the activeX control.
i can get the IHTMLElement for the <object> tag in HTML but is there any way which can give me the HWND of the player
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
It may not have a window if it's a windowless control. If it has a window today it may not "tomorrow" if you upgrade the component and the implementers decide to optimize it by making it a windowless control. In general groveling around with the HWND s of an ActiveX controls is asking for trouble. What are you trying to do? Perhaps there is a way to do it without side stepping the ActiveX control framework - This would be preferable.
That said if it's got a window you can use the IOleWindow::GetWindow method to get its handle. The first step is to use IE's interfaces to get the IHTMLObjectElement interface of the object tag then you call the IHTMLObjectElement::get_object method to get the IDispatch interface of the control itself. You call QueryInterface on this for IOleWindow and then call the IOleWindow::GetWindow the get the HWND .
Good luck.
Steve
|
|
|
|
|
QueryInterface fails for IOleWindow
used get_object to get the IDispatch called a few functions of the control as well so this is the right IDispatch but it doesn't return IOleWindow
But this control is a windowed one i can see it if i use Spy++
This control is behaving very strangly as i mentioned in the other post (on top of this one)
maybe i should use WM_CREATE hook (don't really want to do that)
any suggestions
i Queried for IOleInPlaceObject instead and it succeeded and i call
GetWindow to get the window handle
thanks for all the help
-- modified at 2:59 Thursday 2nd March, 2006
|
|
|
|
|
Try QIing for IOleInPlaceObject in place of IOleWindow .
Steve
|
|
|
|
|
Hai,
I am a newbie to ATL COM.I have developed my ATL Server(dll server).When i try to access the server from a client i get error
" 'CsampleATL' uses undefined class 'ATL_NO_VTABLE' "
Pls help me to fix this.Any help appreciated.
Saravana Kumar
|
|
|
|
|
Can you post the code snippet for the way you are accessing your server?
Have a great day ahead!
Regards,
Sohail Kadiwala
(My Blog - http://blogs.wdevs.com/sohail/[^])
modified 21-Apr-21 21:01pm.
|
|
|
|
|
pWnd = new CMyWnd;
pWnd->Attach(hWnd);
pWnd->SetWindowText("dddd"); // it's ok.
but not handled WM_LBUTTONDOWN message? why?
-------------------------------------
class CMyWnd :<br />
public CWindowImpl<CMyWnd><br />
{<br />
public:<br />
BEGIN_MSG_MAP(CMyWnd)<br />
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)<br />
END_MSG_MAP()<br />
<br />
LRESULT OnLButtonDown(UINT , WPARAM , LPARAM , BOOL& )<br />
{<br />
MessageBox("");<br />
return 0;<br />
}<br />
};
----------------------------------
how can handle the exist window some message ,like Attach(), but it will use Detach(), i want use some function like MFC's CWnd::FromHandle(), only use it can Attach the window.
where use Detach() is good?
|
|
|
|
|
Have you tried pWnd->SubclassWindow(hWnd) instead of Attach?
delete this;
* poof! *
|
|
|
|
|
1.SubclassWindow() not need UnSubclassWindow()?
2.can SubclassWindow() and Attach() Attach other process windows?
3. pWnd = new CMyWnd;
can in CMyWnd delete itself? like MFC
void CMyDlg::PostNcDestroy() <br />
{<br />
delete this;<br />
}
|
|
|
|
|
I've only worked with SubclassWindow in the same process, so can't answer to that, other than to say give it a go and see what happens
delete this;
* poof! *
|
|
|
|