Bonsoir, j'aimerais savoir si quelq'un saurait comment instancier dans une m�thode de dll atl une classe impl�mentant CWindowImpl et ensuite avec une boucle de message r�cup�rer les �v�nements oncreate,onresize,ondestroy ?
Bonsoir, j'aimerais savoir si quelq'un saurait comment instancier dans une m�thode de dll atl une classe impl�mentant CWindowImpl et ensuite avec une boucle de message r�cup�rer les �v�nements oncreate,onresize,ondestroy ?
Est ce que vous sauriez ci ce que je voudrais effectuer est au moins possible, svp ?
http://msdn.microsoft.com/library/en-us/vccore/html/_atl_Implementing_a_Window_with_CWindowImpl.asp
yes, c'est effectivement possible
Regarde un peu dans l'MSDN ou dans ton CD MSDN tu as des exemples de VC++ sur ATL...
Bonsoir,
merci pour vos r�ponses, en fait j'ai d�j� parcouru plus ou moins la doc sur le sujet et la msdn. Mon objectif c'est l'�criture d'une classe impl�mentant CwinowImpl laquelle charge un contr�le WebBrowser, j'appelle ac tuellment une m�thode simple de ma dll depuis vbscript qui instancie la classe de fen�tre et... c'est bon la fen�tre et cr��e. Par contre le point suivant que je veux impl�menter c'est le chargement d'une page dans le contr�le browser et la rcup�ration du code charg�. Pour �a j'ai cr�� une classe de collecteur d'�v�nement : CEventSink, je voudrais pouvoir rep�r� le chargement complet du document, mais pour relier mon collecteur d'�v�nement � la fen�tre nouvellement cr�� j'ai un nouveau probl�me.
Je fais pour cela appel � AtlAxGetControl pour avoir un pointeur d'interface sur le contr�le browser et d�j� l� �a plante... Voici ma fonction :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 //générer à la création de la fenetre LRESULT CMainWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { MessageBox("création de la fen","Messagebox"); HRESULT hr; RECT old; IUnknown * pUnk = NULL; GetClientRect(&old); m_hwndWebBrowser = ::CreateWindow(_T(ATLAXWIN_CLASS), m_URI, /*WS_POPUP|*/WS_CHILD|WS_DISABLED, old.top, old.left, old.right, old.bottom, m_hWnd, NULL, ::GetModuleHandle(NULL), NULL); MessageBox("création de la fen effectuée 1","Messagebox"); //a ce niveau j'ai un plantage!!! hr = AtlAxGetControl(m_hwndWebBrowser, &m_pWebBrowserUnk); MessageBox("création de la fen effectuée 10 ","Messagebox"); if (FAILED(hr)) return 1; MessageBox("création de la fen effectuée 2 ","Messagebox"); if (m_pWebBrowserUnk == NULL) return 1; MessageBox("création de la fen effectuée 3 ","Messagebox"); hr = m_pWebBrowserUnk->QueryInterface(IID_IWebBrowser2, (void**)&m_pWebBrowser); if (FAILED(hr)) return 1; MessageBox("création de la fen effectuée 4 ","Messagebox"); hr = CComObject<CEventSink>::CreateInstance(&m_pEventSink); if (FAILED(hr)) return 1; MessageBox("création de la fen effectuée 5 ","Messagebox"); m_pEventSink->m_pMain = this; MessageBox("création de la fen effectuée 6 ","Messagebox"); hr = AtlAdvise(m_pWebBrowserUnk, m_pEventSink->GetUnknown(), DIID_DWebBrowserEvents2, &m_dwCookie); if (FAILED(hr)) return 1; MessageBox("fin création de la fen","Messagebox"); return 0; }
Partager