Click here to Skip to main content
15,917,538 members
Home / Discussions / ATL / WTL / STL
   

ATL / WTL / STL

 
GeneralRe: calling c# com from c++ using ATL Pin
Liat Even17-Nov-08 8:04
Liat Even17-Nov-08 8:04 
GeneralRe: calling c# com from c++ using ATL Pin
led mike17-Nov-08 9:23
led mike17-Nov-08 9:23 
GeneralRe: calling c# com from c++ using ATL Pin
Stuart Dootson17-Nov-08 12:09
professionalStuart Dootson17-Nov-08 12:09 
QuestionProblem in using _int64 as the key of STL hash_map : error C2064: term does not evaluate to a function Pin
abdulhameedutmanzai15-Nov-08 7:05
abdulhameedutmanzai15-Nov-08 7:05 
AnswerRe: Problem in using _int64 as the key of STL hash_map : error C2064: term does not evaluate to a function Pin
Stuart Dootson17-Nov-08 0:04
professionalStuart Dootson17-Nov-08 0:04 
QuestionHow to change background color fot an IE toolbar? Pin
ritz123413-Nov-08 21:46
ritz123413-Nov-08 21:46 
QuestionHow to retrieve document content or whole document on DocumentOpen Event Pin
PatilVijay9-Nov-08 19:39
PatilVijay9-Nov-08 19:39 
QuestionIn ATL, how to sink web event with IDispEventImpl?? Pin
King_jinjing7-Nov-08 3:12
King_jinjing7-Nov-08 3:12 
Hello~~

In my code, I sink it. but, I get a "First-chance exception at 0x77f87eeb in MyIE.exe: 0xC0000005: Access violation reading location 0x00000024."

I don't know, how do to solve it...I need some help...Thanks~~

I post my code...

<br />
<br />
<br />
#include <windows.h><br />
#include <atlbase.h><br />
#include <atlwin.h><br />
#include <ExDispID.h><br />
<br />
const UINT ID_WEBBROWSER = 100;<br />
<br />
//<br />
//<br />
//<br />
class CMainWindow : public CWindowImpl<CMainWindow>,<br />
                    public IDispEventImpl< ID_WEBBROWSER, CMainWindow ><br />
{<br />
public:<br />
    CMainWindow()<br />
    {<br />
        CWndClassInfo &wci = GetWndClassInfo();<br />
<br />
        if( !wci.m_atom )<br />
        {<br />
            // <br />
            wci.m_bSystemCursor = TRUE;<br />
        }<br />
<br />
        // <br />
        m_AxWindow = NULL;<br />
        m_pWebBrowser2 = NULL;<br />
    }<br />
<br />
    virtual ~CMainWindow(){}<br />
<br />
<br />
    // msg map<br />
    BEGIN_MSG_MAP(CMainWindow)<br />
        MESSAGE_HANDLER( WM_DESTROY, OnDestroy )<br />
        MESSAGE_HANDLER(WM_CREATE, OnCreate)<br />
    END_MSG_MAP()<br />
<br />
    BEGIN_SINK_MAP(CMainWindow)<br />
	    //Make sure the Event Handlers have __stdcall calling convention<br />
	    SINK_ENTRY( ID_WEBBROWSER, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete )<br />
    END_SINK_MAP()<br />
<br />
    // Event handler<br />
	void __stdcall OnDocumentComplete( IDispatch *, VARIANT* )<br />
	{<br />
        <br />
	}<br />
<br />
private:<br />
    LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)<br />
    {<br />
        RECT rect;<br />
        GetClientRect(&rect);<br />
        // create host<br />
        HWND hWndContainer = m_AxWindow.Create( m_hWnd, rect, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, 0, ID_WEBBROWSER );<br />
<br />
        if( !hWndContainer )<br />
            return -1;<br />
<br />
        // create IE control<br />
        HRESULT hr;<br />
        hr = m_AxWindow.CreateControl( L"http://www.microsoft.com" );<br />
<br />
        if( FAILED( hr ) )<br />
            return -1;<br />
<br />
        // get IWebBrowser2<br />
        hr = m_AxWindow.QueryControl( IID_IWebBrowser2, (void**)&m_pWebBrowser2 );<br />
<br />
        if( SUCCEEDED(hr) )<br />
        {<br />
            // get typelib<br />
            hr = AtlGetObjectSourceInterface( m_pWebBrowser2, &m_libid, <br />
                                              &m_iid, &m_wMajorVerNum, &m_wMinorVerNum );<br />
<br />
            if( FAILED(hr) )<br />
                return -1;<br />
<br />
            // sink<br />
		    hr = DispEventAdvise(m_pWebBrowser2, &m_iid);<br />
<br />
<br />
            if( FAILED(hr) )<br />
                return -1;<br />
<br />
            CComBSTR url = L"http://www.microsoft.com";<br />
<br />
            hr = m_pWebBrowser2->Navigate( url,0,0,0,0 );<br />
<br />
            if( FAILED(hr) )<br />
                return -1;<br />
        }<br />
<br />
        return 0;<br />
    }<br />
<br />
    LRESULT OnDestroy(UINT , WPARAM , LPARAM , BOOL& )<br />
    {<br />
        // disconnect from source if connected<br />
		if( m_dwEventCookie != 0xFEFEFEFE )<br />
		    DispEventUnadvise(m_pWebBrowser2, &m_iid);<br />
<br />
        // free<br />
        m_pWebBrowser2.Release();<br />
<br />
        PostQuitMessage(0);<br />
        return 0;<br />
    }<br />
<br />
private:<br />
    //<br />
    CAxWindow m_AxWindow;<br />
    CComPtr<IWebBrowser2> m_pWebBrowser2; // for COM<br />
};<br />
<br />
//<br />
//<br />
//<br />
int APIENTRY _tWinMain(HINSTANCE hInstance,<br />
                     HINSTANCE hPrevInstance,<br />
                     LPTSTR    lpCmdLine,<br />
                     int       nCmdShow)<br />
{<br />
	UNREFERENCED_PARAMETER(hPrevInstance);<br />
	UNREFERENCED_PARAMETER(lpCmdLine);<br />
	<br />
	CMainWindow wnd;<br />
<br />
    wnd.Create( NULL, NULL, NULL, WS_OVERLAPPEDWINDOW );<br />
<br />
    if( !wnd )<br />
        return FALSE;<br />
<br />
    wnd.CenterWindow();<br />
    wnd.ShowWindow( nCmdShow );<br />
    wnd.UpdateWindow();<br />
<br />
    MSG msg;<br />
<br />
	// Main message loop:<br />
	while (GetMessage(&msg, NULL, 0, 0))<br />
	{<br />
		TranslateMessage(&msg);<br />
		DispatchMessage(&msg);<br />
	}<br />
<br />
	return (int) msg.wParam;<br />
}<br />



compile code need to SET "Dynamic Link to ATL".
AnswerRe: In ATL, how to sink web event with IDispEventImpl?? Pin
Stuart Dootson7-Nov-08 5:47
professionalStuart Dootson7-Nov-08 5:47 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
King_jinjing7-Nov-08 6:04
King_jinjing7-Nov-08 6:04 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
Stuart Dootson7-Nov-08 8:50
professionalStuart Dootson7-Nov-08 8:50 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
King_jinjing7-Nov-08 18:05
King_jinjing7-Nov-08 18:05 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
Stuart Dootson8-Nov-08 1:10
professionalStuart Dootson8-Nov-08 1:10 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
King_jinjing8-Nov-08 5:38
King_jinjing8-Nov-08 5:38 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
Stuart Dootson9-Nov-08 22:21
professionalStuart Dootson9-Nov-08 22:21 
GeneralRe: In ATL, how to sink web event with IDispEventImpl?? Pin
King_jinjing10-Nov-08 3:15
King_jinjing10-Nov-08 3:15 
QuestionNT Services (ATL Com AppWizard - ServerType:Service(exe) ) Pin
Taruni4-Nov-08 0:48
Taruni4-Nov-08 0:48 
AnswerRe: NT Services (ATL Com AppWizard - ServerType:Service(exe) ) Pin
led mike4-Nov-08 6:53
led mike4-Nov-08 6:53 
QuestionIs it to return the address of an element in a vector Pin
followait29-Oct-08 0:11
followait29-Oct-08 0:11 
AnswerRe: Is it to return the address of an element in a vector Pin
Roger Stoltz29-Oct-08 0:39
Roger Stoltz29-Oct-08 0:39 
AnswerRe: Is it to return the address of an element in a vector Pin
Stuart Dootson29-Oct-08 4:13
professionalStuart Dootson29-Oct-08 4:13 
GeneralRe: Is it to return the address of an element in a vector Pin
followait29-Oct-08 5:01
followait29-Oct-08 5:01 
AnswerRe: Is it to return the address of an element in a vector Pin
Jürgen Jung5-Nov-08 22:08
Jürgen Jung5-Nov-08 22:08 
AnswerRe: Is it to return the address of an element in a vector Pin
Michael Dunn5-Dec-08 15:54
sitebuilderMichael Dunn5-Dec-08 15:54 
Questiona small question about STL naming convention Pin
followait27-Oct-08 16:51
followait27-Oct-08 16:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.