From 8003bee5f601b928669b04d64db86f1b674aa1e2 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 10 Mar 2020 00:17:03 -0700 Subject: [PATCH] Made IEBrowser handle externals --- Application.cpp | 8 ++++--- IEBrowser.cpp | 49 ++++++++++++++++++++++++++++++++++++--- IEBrowser.h | 13 ++++++++++- ax.cpp | 41 ++++---------------------------- ax.h | 3 ++- content/page/hopper.html | Bin 2088 -> 1111 bytes main.cpp | 1 - 7 files changed, 69 insertions(+), 46 deletions(-) diff --git a/Application.cpp b/Application.cpp index 0f4a45e..43d04d7 100644 --- a/Application.cpp +++ b/Application.cpp @@ -30,7 +30,7 @@ #include "DeleteListener.h" #include "CameraButtonListener.h" #include "RotateButtonListener.h" -//#define LEGACY_LOAD_G3DFUN_LEVEL +#define LEGACY_LOAD_G3DFUN_LEVEL Ray testRay; static int cursorid = 0; static int cursorOvrid = 0; @@ -113,7 +113,7 @@ Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(setti Win32Window* window = Win32Window::create(_settings.window,_hwndRenderer); ShowWindow(_hwndRenderer, SW_SHOW); ShowWindow(_hWndMain, SW_SHOW); - + quit=false; rightButtonHolding=false; mouseOnScreen=false; @@ -135,6 +135,8 @@ Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(setti SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); _propWindow = new PropertyWindow(0, 0, 200, 640, hThisInstance); webBrowser = new IEBrowser(_hwndToolbox); + + SetWindowLongPtr(_hwndToolbox,GWL_USERDATA+1,(LONG)webBrowser); //webBrowser->navigateSyncURL(L"http://androdome.com/res/ClientToolbox.php"); navigateToolbox(GetFileInPath("/content/page/controller.html")); @@ -342,7 +344,7 @@ void eject(PartInstance * colliding, PartInstance * collider) if(colliding == collider || !colliding->canCollide || !collider->canCollide) return; if(G3D::CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(collider->getBox(), colliding->getBox())) - collider->setVelocity(collider->getVelocity().reflectionDirection(colliding->cFrame.upVector())/1.3); + collider->setVelocity(collider->getVelocity().reflectionDirection(colliding->cFrame.upVector())/1.3F); } diff --git a/IEBrowser.cpp b/IEBrowser.cpp index 62d3737..e1dec47 100644 --- a/IEBrowser.cpp +++ b/IEBrowser.cpp @@ -7,11 +7,54 @@ #include "IEBrowser.h" #include "Globals.h" +#pragma once #include "ax.h" -void IEBrowser::Boop(char* test) +HRESULT IEBrowser::doExternal(std::wstring funcName, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pDispParams, + VARIANT FAR* pVarResult, + EXCEPINFO FAR* pExcepInfo, + unsigned int FAR* puArgErr) { - // External functions may end up here in the future + if (funcName==L"Insert") + { + + MessageBoxW(NULL, pDispParams->rgvarg->bstrVal,L"Add insert here...",MB_OK); + return S_OK; + } + else if (funcName==L"Boop") + { + MessageBox(NULL, "BOOP", "Boopity boop",MB_OK); + } + else if (funcName==L"SetController") + { + bool ding = false; + //int len = SysStringLen(pDispParams->rgvarg->bstrVal)+1; + //char * args = new char[len]; + //WideCharToMultiByte(CP_ACP, 0, pDispParams->rgvarg->bstrVal, len, args, len, NULL, (LPBOOL)TRUE); + if(pDispParams->rgvarg->intVal < 0 || pDispParams->rgvarg->intVal > 7) + return S_OK; + Enum::Controller::Value cont = (Enum::Controller::Value)pDispParams->rgvarg->intVal; + for(size_t i = 0; i < g_selectedInstances.size(); i++) + { + if(PVInstance* part = dynamic_cast(g_selectedInstances.at(i))) + { + ding = true; + part->controller = cont; + } + } + if(ding) + AudioPlayer::playSound(dingSound); + return S_OK; + } + else + { + return E_NOTIMPL; + } } IEBrowser::IEBrowser(HWND attachHWnd) { @@ -39,7 +82,7 @@ IEBrowser::~IEBrowser(void) { bool IEBrowser::navigateSyncURL(wchar_t* url) { - MSG messages; + //MSG messages; if (webBrowser) { diff --git a/IEBrowser.h b/IEBrowser.h index 1bef0a7..15b3264 100644 --- a/IEBrowser.h +++ b/IEBrowser.h @@ -1,16 +1,27 @@ //#include "WindowFunctions.h" #pragma once +#include "Globals.h" +#pragma once #include #include #include #include "IEDispatcher.h" +#include "AudioPlayer.h" class IEBrowser { public: IEBrowser(HWND attachHWnd); ~IEBrowser(void); bool navigateSyncURL(wchar_t* url); - void Boop(char* test); + HRESULT doExternal(std::wstring funcName, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pDispParams, + VARIANT FAR* pVarResult, + EXCEPINFO FAR* pExcepInfo, + unsigned int FAR* puArgErr); private: IWebBrowser2* webBrowser; HWND hwnd; diff --git a/ax.cpp b/ax.cpp index 0c4b4fc..a8f6eba 100644 --- a/ax.cpp +++ b/ax.cpp @@ -505,43 +505,10 @@ HRESULT _stdcall AXClientSite :: Invoke( EXCEPINFO FAR* pExcepInfo, unsigned int FAR* puArgErr) { - - if (m_lastExternalName==L"Insert") - { - - MessageBoxW(NULL, pDispParams->rgvarg->bstrVal,L"Add insert here...",MB_OK); - return S_OK; - } - else if (m_lastExternalName==L"Boop") - { - MessageBox(NULL, "BOOP", "Boopity boop",MB_OK); - } - else if (m_lastExternalName==L"SetController") - { - bool ding = false; - //int len = SysStringLen(pDispParams->rgvarg->bstrVal)+1; - //char * args = new char[len]; - //WideCharToMultiByte(CP_ACP, 0, pDispParams->rgvarg->bstrVal, len, args, len, NULL, (LPBOOL)TRUE); - if(pDispParams->rgvarg->intVal < 0 || pDispParams->rgvarg->intVal > 7) - return S_OK; - Enum::Controller::Value cont = (Enum::Controller::Value)pDispParams->rgvarg->intVal; - for(size_t i = 0; i < g_selectedInstances.size(); i++) - { - if(PVInstance* part = dynamic_cast(g_selectedInstances.at(i))) - { - ding = true; - part->controller = cont; - } - } - if(ding) - AudioPlayer::playSound(dingSound); - return S_OK; - } - else - { - return E_NOTIMPL; - } - return S_OK; + IEBrowser * browser = (IEBrowser *)GetWindowLongPtr(Window,GWL_USERDATA+1); + return browser->doExternal(m_lastExternalName,dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + //return S_OK; } diff --git a/ax.h b/ax.h index 10c1cc7..2fcce49 100644 --- a/ax.h +++ b/ax.h @@ -3,6 +3,8 @@ #include "Globals.h" #include #include +#pragma once +#include "IEBrowser.h" // messages #define AX_QUERYINTERFACE (WM_USER + 1) @@ -40,7 +42,6 @@ class AXClientSite : bool CalledCanInPlace; class AX* ax; - // MyClientSite Methods AXClientSite(); virtual ~AXClientSite(); diff --git a/content/page/hopper.html b/content/page/hopper.html index 88582929609379f5ff75e75564ae44f5675b222e..bed95b0d5f6f1e427037c25bed6079dd237902d6 100644 GIT binary patch literal 1111 zcmcJPT}#6-6o#+cUvbP;3tPHP=S4pTDhS@_h2Be-q+M8=Q_^%Fi2vQJa~8bOqJt0; z&U<*@JRwO}wo(f}ZJ3d@UHD$nYGx&Bu!!nuV***_r3iiR&G$T69JjPFj7rVL?x_gK zE7!EvB?%$RU_5nNr#y5WWRStvni^57oQZ&R`VsW4iSNCCH*f7A^NZh_pYo25F~ZI} zjZO&CCGtHqcCSQ6mN{FO23yU?3>BIfZd+?n-@9WZQ01nSI)+ICbPGE_K3lmQg;vlE8D#5|Y2&GYnr-|-RTZ2joGktOBJ3@e(DaqCu**e;| zrDA7=(Yd0}!uAcpG$c-1VcQ6&(iu5jo?XeNueJ4O#gRQ$q94P|28WsThW{Pr=3zLS l`8neZr*l2KymF(P&X?>FwHSPHlRxB1qri%STh3~U6hHr;R#E?4FS9m09_2E{suNez&C*1JP!!8f4iHvi;ue-E`XpA;_daU ztJtGKQJ9ZeW0CdVhuU2L)x6#)j~E)d`8xrzqz)e-7qz>uFP-CWj&X&#QW{5tUo*+v z3ePw3VYFu^E|QmpU5`0<1{k|I*Ba1@oU~**u(hbyx2Ydf8GAyV%=xWm)qZ6=fZ>-| zEg#ID94D8ZmT<$#YUfp6lxEfH)GZ$Id@jlCcN4&^Po~pT22pVD`MKHGjU1l5Y*0Mb zgMfjHv6`de3;K>tFsuaIDs0auG|)J%9-sK78!T75J#!CF<+|aATjaHKiNxS{<r0nFG_xZGn`*Kblu5m=wjv^GX{MC9Tg0Kn8xRlf zaFU)wAR~;^6}ud{KKA#R(OQE(y*@);90R8Zz2pUpoawUj(kpi~y&;N5s(iIzM3k&- z9E4OjHAi#vkGRvLVYd)Xwe`(k0#(Jq2PIU-l$3()&i-eQ9z%*JQha|E@!8GJ6>*-A z-1Htx{9hy1ugnBT7Y2oWNP}Eqa@n0zy`es(_ANA*V%>+*v}tjxiCA${6cw^R@qBOz zu(KKe^IkjHGpv<{Gq{57d#iEBE4b>yB3E5sq+p*T_bRh^rJ}XUD?UL5t8{J*rn*8G ztr>F^S>|IE-fKNj81@b6fAy(88{L&9<0Vv8<6kGb=tg02R5b_l$o3p$e!G!Pbs>91 zx(FFXFYc3ET(E3ZP+(+&+gz3$7+6>DJdMmmKPo??7Y}bNNLiXyf{lnWrj?JIBn82~ zhW?`UF7j-609MBTB-rs*Q&=-cDY>BdWj#;(Qes@^`)g?j(8Uz3$y2?CgA>*|i=g_L zDj^}Owrf$*mNt$WdA&ycq(5tu)vE0`zG3zpiuyUPONyWXCXml3KyC#9>y0D0Y}Wp@ zWL@7II>IsR^#p&`tWG#w>b{LvS0h3wWF8+RiV>`W_Dyu0*rli66%z5lcd91z;attJ zaU)gltaH)Y3&Kw)>=B<2jmw7z_m`8X?~a)S53ZK;Q>S^;vO3poO>iTBr0+sn_{JrP zXJS(OtaBg@gaDa8UO)}0r))FTB!{A;m?4QU>7wP8Wx}r(rQ_&?`M>UK9O8Sh=SxR~u;%NZSulo2t91g=Cjl(%25bP1KydfD67YiwC7~NSyJLbQ4d(Xp zUWgWuO^}r}MEd!~LQc@BDQDMLGalg+8O1c`H7Csn?>`GZpB?d&*IPu2UXM4Oa!i$E zb>(O^xx1S2`72v25A(KUGsSjYeQ?1;Hg!}nM`gG!NX>yZMO3xAdP(XN+9(5)jV9Ii zZ~}Ihz!{fr65X;Wg~-y54z5Nno~L^+C$mRhf;?ngONxCyLoVQ``xTa>Ygfv=sX;x( z8SJ&5z;G2xHgodv=wUJFnp{LR>P4o-SX`v>VouFdnzZ!H-k&4yKe}(u8HgGI1%WnI zG=LE5h5H_N4CTURTgS5h*`K&}Ps6vz)XeQ9HoMz3-7C#5U)8hTvV=93r01Sj7@|*C z?^q2}uQpY{3bxyPfL)Ou;6enB-bR}YL_%LZtmu!U_)kyDJDRCE&xkSoADtl>hY;G1 zQk)c`tkZ9DmjXGeyq)^^z^7h0@{ez8>5a=mrw-fd>fF`EFYN`Ze2S2Q*_>k?Igfe~ zfqx_&lKcgI=2oF{wfq7S3RVubhd=a1zlpDlp(uc5Dkd*G zbsJc%7+6q7>n{?uPanXy8^q2yDY(;X*(r BU>yJe diff --git a/main.cpp b/main.cpp index 3cf9e6c..51058b1 100644 --- a/main.cpp +++ b/main.cpp @@ -176,7 +176,6 @@ int main(int argc, char** argv) { try{ hresult = OleInitialize(NULL); - HRESULT hr; /* IInternetSecurityManager *pSecurityMgr; IInternetZoneManager *pZoneMgr; LPCWSTR site1 = SysAllocString(L"http://www.androdome.com");