HRESULT STDMETHODCALLTYPE CGainer::Open( /* [in] */ BSTR device) { if (SysStringLen(device) == 0 || SysStringLen(device) > 5 || wcsncmp(L"COM", device, 3)) return Error(IDS_E_BADNAME); if (!m_iothread) { if (!m_hWndCD) { HWND hparent = NULL; RECT rc = { 0, 0, 0, 0, }; if (m_spInPlaceSite) { m_spInPlaceSite->GetWindow(&hparent); } CreateControlWindow(hparent, rc); #if defined(ACTIVEX_CONTROL_ONLY) if (!m_hWndCD) { return Error(IDS_E_BADWINDOW); } #endif } ThreadParam* t = new ThreadParam(device, m_hWndCD); m_iothread = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, start_iothread, t, 0, reinterpret_cast<unsigned*>(&m_iothread_id))); } return S_OK; }
/* --------------------------------------------------------------------- */ int main(int argc, char *argv[]) { int n; Arg args[6]; Initialize(); ProcessArgs(argv); ReadConfigFile(); AutoScale(); if (!Interactive) PrintPS((Widget)NULL, (XtPointer)NULL, (XtPointer)NULL); else { AppShell = XtAppInitialize(&appContext, APP_CLASS, NULL, 0, &argc, argv, fallback_resources, NULL, 0); XtGetApplicationResources(AppShell, (caddr_t) &iv, resources, XtNumber(resources), NULL, 0); n = 0; MainShell = XtCreatePopupShell("topLevelShell", topLevelShellWidgetClass, AppShell, args, n); MainWindow = CreateMainWindow(MainShell); n = 0; ControlShell = XtCreatePopupShell("controlShell", topLevelShellWidgetClass, AppShell, args, n); CreateControlWindow(ControlShell); CreateErrorBox(AppShell); CreateQueryBox(AppShell); CreateWarningBox(AppShell); CreateFileSelectionBox(AppShell); if (NumberDataFiles > 0) NewDataFile((Widget)NULL, (XtPointer)NULL, (XtPointer)NULL); OpenControlWindow(NULL, NULL, NULL); XtManageChild(MainWindow); XtPopup(XtParent(MainWindow), XtGrabNone); if (RealTime) XtAppAddTimeOut(appContext, 1000, UpdateDataRT, NULL); XtAppMainLoop(appContext); } return(0); } /* END MAIN */
HRESULT COleControl::OnActivateInPlace(BOOL bUIActivate, LPMSG pMsg) { #ifdef _AFXDLL if (m_bOpen) { m_pWndOpenFrame->SetActiveWindow(); SendAdvise(OBJECTCODE_SHOWWINDOW); return S_OK; } #endif // Initialize pointer to in-place site, if necessary. if (m_pInPlaceSite == NULL) { if (m_pClientSite == NULL) return E_UNEXPECTED; if ((GetControlFlags() & windowlessActivate) && SUCCEEDED(m_pClientSite->QueryInterface(IID_IOleInPlaceSiteWindowless, reinterpret_cast<void**>(&m_pInPlaceSiteWndless)))) { m_bInPlaceSiteWndless = m_bInPlaceSiteEx = TRUE; } else if ((GetControlFlags() & noFlickerActivate) && SUCCEEDED(m_pClientSite->QueryInterface(IID_IOleInPlaceSiteEx, reinterpret_cast<void**>(&m_pInPlaceSiteEx)))) { m_bInPlaceSiteEx = TRUE; } else if (SUCCEEDED(m_pClientSite->QueryInterface(IID_IOleInPlaceSite, reinterpret_cast<void**>(&m_pInPlaceSite)))) { m_bInPlaceSiteEx = FALSE; } else { m_pInPlaceSite = NULL; return E_FAIL; } } ASSERT(m_pInPlaceSite != NULL); if ((m_bInPlaceActive && !bUIActivate) || m_bUIActive) { CWnd* pWndOuter = GetOuterWindow(); HWND hwndParent; if ((pWndOuter != NULL) && SUCCEEDED(m_pInPlaceSite->GetWindow(&hwndParent)) && (hwndParent == ::GetParent(pWndOuter->m_hWnd))) { ::SetWindowPos(pWndOuter->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE| SWP_SHOWWINDOW); OnSetObjectRects(m_rcPos, NULL); return S_OK; } } // Check if container allows windowless activation. if (m_bInPlaceSiteWndless) { if (m_pInPlaceSiteWndless->CanWindowlessActivate() != S_OK) m_bInPlaceSiteWndless = FALSE; } HRESULT hr = E_FAIL; if (m_pInPlaceSite != NULL) hr = m_pInPlaceSite->CanInPlaceActivate(); if (hr != NOERROR) { // Site doesn't allow in-place activation. return OnOpen(FALSE, pMsg); } if (!m_bInPlaceActive) { if (m_bInPlaceSiteEx) { // flicker-free and/or windowless activation BOOL bNoRedraw; m_pInPlaceSiteEx->OnInPlaceActivateEx(&bNoRedraw, m_bInPlaceSiteWndless ? ACTIVATE_WINDOWLESS : 0); if (GetControlFlags() & noFlickerActivate) m_bNoRedraw = bNoRedraw; } else { // old-style activation m_pInPlaceSite->OnInPlaceActivate(); } } HWND hwndParent = NULL; if (SUCCEEDED(m_pInPlaceSite->GetWindow(&hwndParent))) { CRect rcClip; m_frameInfo.cb = sizeof(OLEINPLACEFRAMEINFO); RELEASE(m_pInPlaceFrame); RELEASE(m_pInPlaceDoc); if (SUCCEEDED(m_pInPlaceSite->GetWindowContext( &m_pInPlaceFrame, &m_pInPlaceDoc, &m_rcPos, &rcClip, &m_frameInfo))) { ASSERT(m_pInPlaceFrame != NULL); CRect rectClip; if (!m_bInPlaceSiteWndless) { _GetClippingCoordinates(&m_rcPos, &rcClip, rectClip, &m_ptOffset); m_bInPlaceActive = CreateControlWindow(hwndParent, m_rcPos, rectClip); } else { m_bInPlaceActive = TRUE; } if (m_bInPlaceActive) { if (bUIActivate) { if (m_bInPlaceSiteEx) { if (m_pInPlaceSiteEx->RequestUIActivate() != S_OK) m_pInPlaceSite->OnUIDeactivate(FALSE); } BuildSharedMenu(); m_bUIActive = TRUE; m_pInPlaceSite->OnUIActivate(); m_pInPlaceFrame->SetActiveObject( &m_xOleInPlaceActiveObject, NULL); if (m_pInPlaceDoc != NULL) m_pInPlaceDoc->SetActiveObject( &m_xOleInPlaceActiveObject, NULL); if (m_hWnd != NULL) { BOOL bHandles = AmbientShowGrabHandles(); BOOL bHatching = AmbientShowHatching(); if (bHandles || bHatching) CreateTracker(bHandles, bHatching, rcClip); } AddFrameLevelUI(); if (bUIActivate != -1 && (m_hWnd != NULL) && !IsChild(GetFocus())) { SetFocus(); } } // Pass thru the window message that caused us to be activated if ((m_hWnd != NULL || m_bInPlaceSiteWndless) && (pMsg != NULL)) ForwardActivationMsg(pMsg); // Send appropriate notifications... SendAdvise(OBJECTCODE_SHOWOBJECT); return S_OK; } } } RELEASE(m_pInPlaceFrame); RELEASE(m_pInPlaceDoc); return E_FAIL; }