LRESULT CLogView::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { DefWindowProc(); CComPtr<IAxWinHostWindow> spHost; IF_FAILED_RET(QueryHost(__uuidof(IAxWinHostWindow), (void**)&spHost)); spHost->QueryControl(IID_IWebBrowser2, (void**)&m_pWebBrowser.p); ATLASSERT(m_pWebBrowser); if (!m_pWebBrowser) { return -1; } return 0; }
//ドラッグドロップ時の操作を制御するかIEコンポに任せるか void CDonutView::SetOperateDragDrop(BOOL bOn, int nCommand) { CComPtr<IAxWinHostWindow> spAxWindow; HRESULT hr = QueryHost(&spAxWindow); if ( FAILED(hr) ) return; //SetRegisterAsDropTarget(bOn != 0/*? true : false*/); // falseだとDDを受け付けない #if 0 //_ATL_VER >= 0x700 if (bOn) m_ExternalUIDispatch.SetExternalDropTarget(this); // DDを受け付ける else m_ExternalUIDispatch.SetExternalDropTarget(NULL); // DDを受け付けない #endif if (bOn) { m_bUseCustomDropTarget = true; } else { m_bUseCustomDropTarget = false; } m_nDDCommand = nCommand; }
LRESULT CBackgroundWindow::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { DefWindowProc(); CComPtr<IAxWinHostWindow> spHost; IF_FAILED_RET2(QueryHost(__uuidof(IAxWinHostWindow), (void**)&spHost), -1); CComPtr<IUnknown> p; IF_FAILED_RET2(spHost->CreateControlEx(m_sURL, *this, NULL, &p, DIID_DWebBrowserEvents2, (IUnknown *)(BackgroundWindowWebBrowserEvents *) this), -1); m_pWebBrowser = p; if (!m_pWebBrowser) { return -1; } CIDispatchHelper script = CIDispatchHelper::GetScriptDispatch(m_pWebBrowser); for (DispatchMap::iterator it = m_InjectedObjects.begin(); it != m_InjectedObjects.end(); ++it) { script.SetProperty((LPOLESTR)(it->first.c_str()), CComVariant(it->second)); } //Replacing XMLHttpRequest by wrapper CComPtr<IAnchoXmlHttpRequest> pRequest; IF_FAILED_RET(createAnchoXHRInstance(&pRequest)); IF_FAILED_RET(script.SetProperty((LPOLESTR)L"XMLHttpRequest", CComVariant(pRequest.p))); CIDispatchHelper window; script.Get<CIDispatchHelper, VT_DISPATCH, IDispatch*>(L"window", window); if (window) { IF_FAILED_RET(window.SetProperty((LPOLESTR)L"XMLHttpRequest", CComVariant(pRequest.p))); } // This AddRef call is paired with the Release call in OnFinalMessage // to keep the object alive as long as the window exists. AddRef(); return 0; }
/// ウィンドウの初期化 int CDonutView::OnCreate(LPCREATESTRUCT lpCreateStruct) { // Let me initialize itself LRESULT lRet = DefWindowProc(); try { HRESULT hr = QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser); ATLASSERT(m_spBrowser); BOOL bCheck = GetRegisterAsDropTarget(); hr = CoCreateInstance(CLSID_DragDropHelper, NULL, CLSCTX_INPROC_SERVER, IID_IDropTargetHelper, (LPVOID*)&m_spDropTargetHelper); ATLASSERT(hr == S_OK); // Set flat scrollbar style CComPtr<IAxWinHostWindow> spAxHostWindow; hr = QueryHost(&spAxHostWindow); // ホストを取得 if (FAILED(hr)) AtlThrow(hr); m_spAxAmbient = spAxHostWindow; ATLASSERT(m_spAxAmbient); //フラットビューの可否を適用 //hr = m_spAxAmbient->put_DocHostFlags(_bFlatView ? docHostUIFlagNotFlatView : docHostUIFlagDEFAULT); // UDT DGSTR ( added by dai #if 1 //+++ xp以降は themeによって平面的であることを期待して、フラットスクロールバーにしないtheme onの設定にする. //BOOL bFlatView = (m_dwDefaultExtendedStyleFlags & DVS_EX_FLATVIEW) != 0; //+++ ? 1 : 0; BOOL bFlatView = (m_ViewOption.m_dwExStyle & DVS_EX_FLATVIEW) != 0; //+++ ? 1 : 0; unsigned flags = DOCHOSTUIFLAG_NOT_FLATVIEW; if (bFlatView) { flags = _CheckOsVersion_XPLater() ? DOCHOSTUIFLAG_THEME_VIEW : DOCHOSTUIFLAG_NOT_FLATVIEW; } #else BOOL bFlatView = (CDLControlOption::s_dwExtendedStyleFlags & DVS_EX_FLATVIEW) != 0; //+++ ? 1 : 0; unsigned flags = bFlatView ? DOCHOSTUIFLAG_FLATVIEW : DOCHOSTUIFLAG_NOT_FLATVIEW; #endif hr = m_spAxAmbient->put_DocHostFlags(flags); //\\ flagsを設定する if (FAILED(hr)) AtlThrow(hr); // 外部UIのIDispatchインターフェイスを設定する CComQIPtr<IDocHostUIHandler> pDefaultHandler = spAxHostWindow; m_ExternalUIDispatch.SetDefaultUIHandler(pDefaultHandler); spAxHostWindow->SetExternalUIHandler(&m_ExternalUIDispatch); // 外部AmbientIDispatchインターフェイスを設定する CComQIPtr<IAxWinAmbientDispatchEx> pAmbient = spAxHostWindow; m_spHost = spAxHostWindow; //m_ExternalAmbientDispatch.SetHostWindow(spAxWindow); pAmbient->SetAmbientDispatch((IDispatch*)this);//(&m_ExternalAmbientDispatch); // DLMnager用にIServiceProviderを登録する CComQIPtr<IObjectWithSite> spObjectWithSite = spAxHostWindow; ATLASSERT(spObjectWithSite); hr = spObjectWithSite->SetSite((IUnknown*)(IServiceProvider*)this); _InitDLControlFlags(); #if 1 //+++ if (m_ViewOption.m_dwExStyle == (DWORD)-1) m_ViewOption.m_dwExStyle = CDLControlOption::s_dwExtendedStyleFlags; //_dwViewStyle; #else ATLASSERT(m_ViewOption.m_dwExStyle == 0); m_ViewOption.m_dwExStyle = CDLControlOption::s_dwExtendedStyleFlags; //_dwViewStyle; #endif RegisterDragDrop(m_hWnd, this); } catch (const CAtlException& e) { MessageBox(GetLastErrorString(e)); } return 0; }
static int ipx_win_GetMyAddress( void ) { #if 1 # if 0 char buf[256]; ubyte *qhbuf; if (gethostname(buf,sizeof(buf))) FAIL("Error getting my hostname"); if (!(qhbuf = QueryHost(buf))) FAIL("Querying my own hostname \"%s\"",buf); memset(ipx_MyAddress+0,0,4); memcpy(ipx_MyAddress+4,qhbuf,6); # endif #else int sock; struct sockaddr_ipx ipxs; struct sockaddr_ipx ipxs2; int len; int i; // sock=socket(AF_IPX,SOCK_DGRAM,PF_IPX); sock=socket(AF_IPX,SOCK_DGRAM,0); if(sock==-1) { #if TRACE PrintLog ("IPX: could not open socket in GetMyAddress\n"); #endif return(-1); } /* bind this socket to network 0 */ ipxs.sa_family=AF_IPX; #ifdef IPX_MANUAL_ADDRESS memcpy(ipxs.sa_netnum, ipx_MyAddress, 4); #else memset(ipxs.sa_netnum, 0, 4); #endif ipxs.sa_socket=0; if (bind (sock, reinterpret_cast<struct sockaddr*> (&ipxs), sizeof (ipxs)) == -1) { #if TRACE PrintLog ("IPX: could bind to network 0 in GetMyAddress\n"); #endif closesocket( sock ); return(-1); } len = sizeof(ipxs2); if (getsockname(sock, reinterpret_cast<struct sockaddr*> (&ipxs2), &len) < 0) { #if TRACE PrintLog ("IPX: could not get socket name in GetMyAddress\n"); #endif closesocket( sock ); return(-1); } memcpy(ipx_MyAddress, ipxs2.sa_netnum, 4); for (i = 0; i < 6; i++) { ipx_MyAddress[4+i] = ipxs2.sa_nodenum[i]; } /*printf("My address is 0x%.4X:%.2X.%.2X.%.2X.%.2X.%.2X.%.2X\n", *reinterpret_cast<int*> (ipxs2.sa_netnum), ipxs2.sa_nodenum[0], ipxs2.sa_nodenum[1], ipxs2.sa_nodenum[2], ipxs2.sa_nodenum[3], ipxs2.sa_nodenum[4], ipxs2.sa_nodenum[5]); */ closesocket( sock ); #endif return(0); }