home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- #include "stdafx.h"
-
- #include "winclose.h"
- #include "wfedde.h"
- #include "mainfrm.h"
-
- // Static property.
- CPtrList CWindowChangeRegistry::m_Registry;
-
- CWindowChangeItem::CWindowChangeItem(DWORD dwWindowID, int iType) : CWindowChangeRegistry() {
- m_dwWindowID = dwWindowID;
- m_iType = iType;
- }
-
- void CWindowChangeItem::Closing(DWORD dwWindowID) {
- // Purpose: Go through all registered windows, and tell them if they are the one closing.
- // Arguments: dwWindowID The window closing.
- // Returns: void
- // Comments:
- // Revision History:
- // 01-19-95 created GAB
- //
-
- // Go through the registry, call the member WindowClosing, vtables call the correct class.
- POSITION rIndex = m_Registry.GetHeadPosition();
- CWindowChangeItem *pClose;
- while(rIndex != NULL) {
- pClose = (CWindowChangeItem *)m_Registry.GetNext(rIndex);
- if(pClose->GetWindowID() == dwWindowID) {
- pClose->WindowClosing(theApp.m_bExit);
-
- // Remove it from the list, no longer needed, as window doesn't exist.
- delete pClose;
- }
- }
- }
-
- void CWindowChangeItem::Sizing(DWORD dwWindowID, DWORD dwX, DWORD dwY, DWORD dwCX, DWORD dwCY) {
- // Purpose: Go through all registered windows, and tell them if they are the one is changing.
- // Arguments: dwWindowID The window sizing.
- // dw* The sizes.
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Go through the registry, call the member WindowSizing, vtables call the correct class.
- POSITION rIndex = m_Registry.GetHeadPosition();
- CWindowChangeItem *pClose;
- while(rIndex != NULL) {
- pClose = (CWindowChangeItem *)m_Registry.GetNext(rIndex);
- if(pClose->GetWindowID() == dwWindowID) {
- pClose->WindowSizing(dwX, dwY, dwCX, dwCY);
- }
- }
- }
-
- void CWindowChangeItem::Maximizing(DWORD dwWindowID) {
- // Purpose: Go through all registered windows, and tell them if they are the one is changing.
- // Arguments: dwWindowID The window maximizing.
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Go through the registry, call the member WindowMaximizing, vtables call the correct class.
- POSITION rIndex = m_Registry.GetHeadPosition();
- CWindowChangeItem *pClose;
- while(rIndex != NULL) {
- pClose = (CWindowChangeItem *)m_Registry.GetNext(rIndex);
- if(pClose->GetWindowID() == dwWindowID) {
- pClose->WindowMaximizing();
- }
- }
- }
-
- void CWindowChangeItem::Minimizing(DWORD dwWindowID) {
- // Purpose: Go through all registered windows, and tell them if they are the one is changing.
- // Arguments: dwWindowID The window minimizing.
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Go through the registry, call the member WindowMinimizing, vtables call the correct class.
- POSITION rIndex = m_Registry.GetHeadPosition();
- CWindowChangeItem *pClose;
- while(rIndex != NULL) {
- pClose = (CWindowChangeItem *)m_Registry.GetNext(rIndex);
- if(pClose->GetWindowID() == dwWindowID) {
- pClose->WindowMinimizing();
- }
- }
- }
-
- void CWindowChangeItem::Normalizing(DWORD dwWindowID) {
- // Purpose: Go through all registered windows, and tell them if they are the one is changing.
- // Arguments: dwWindowID The window maximizing.
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Go through the registry, call the member WindowNormalizing, vtables call the correct class.
- POSITION rIndex = m_Registry.GetHeadPosition();
- CWindowChangeItem *pClose;
- while(rIndex != NULL) {
- pClose = (CWindowChangeItem *)m_Registry.GetNext(rIndex);
- if(pClose->GetWindowID() == dwWindowID) {
- pClose->WindowNormalizing();
- }
- }
- }
-
- CDDEWindowChangeItem::CDDEWindowChangeItem(CString& csServiceName, DWORD dwWindowID) : CWindowChangeItem(dwWindowID, m_DDE) {
- m_rIndex = m_Registry.AddTail(this);
- m_csServiceName = csServiceName;
- }
-
- void CDDEWindowChangeItem::WindowClosing(BOOL bExiting) {
- // Purpose: Tell the DDE implementation that the window is closing, and the exit status.
- // Arguments: bExiting If the app is exiting, this is TRUE.
- // Returns: void
- // Comments:
- // Revision History:
- // 01-19-95 created GAB
- //
-
- // Just call the DDE implementation, it will handle the details.
- CDDEWrapper::WindowChange(this, m_Close, (TwoByteBool)bExiting);
- }
-
- void CDDEWindowChangeItem::WindowSizing(DWORD dwX, DWORD dwY, DWORD dwCX, DWORD dwCY) {
- // Purpose: Tell the DDE implementation that the window is resized, and the new coordinates.
- // Arguments: dwX The x position.
- // dwY The y position.
- // dwCX The width.
- // dwCY The height.
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Just call the DDE implementation, it will handle the details.
- CDDEWrapper::WindowChange(this, m_Size, FALSE, dwX, dwY, dwCX, dwCY);
- }
-
- void CDDEWindowChangeItem::WindowMaximizing() {
- // Purpose: Tell the DDE implementation that the window is resized, and the new coordinates.
- // Arguments: void
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Just call the DDE implementation, it will handle the details.
- CDDEWrapper::WindowChange(this, m_Maximize);
- }
-
- void CDDEWindowChangeItem::WindowMinimizing() {
- // Purpose: Tell the DDE implementation that the window is resized, and the new coordinates.
- // Arguments: void
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Just call the DDE implementation, it will handle the details.
- CDDEWrapper::WindowChange(this, m_Minimize);
- }
-
- void CDDEWindowChangeItem::WindowNormalizing() {
- // Purpose: Tell the DDE implementation that the window is resized, and the new coordinates.
- // Arguments: void
- // Returns: void
- // Comments:
- // Revision History:
- // 02-01-95 created GAB
- //
-
- // Just call the DDE implementation, it will handle the details.
- CDDEWrapper::WindowChange(this, m_Normalize);
- }
-
- BOOL CDDEWindowChangeItem::DDERegister(CString& csServiceName, DWORD dwWindowID) {
- // Purpose: Register a server to monitor when a window closes.
- // Arguments: csServiceName The server to callback.
- // dwWindowID The window to monitor.
- // Returns: BOOL Wether or not registration was successful.
- // Comments: Constructor, basically.
- // Revision History:
- // 01-19-95 created GAB
- //
-
- // Don't allow the mimimized window to be monitored.
- if(dwWindowID == 0) {
- return(FALSE);
- }
-
- // Make sure such a window exists.
- CAbstractCX *pCX = CAbstractCX::FindContextByID(dwWindowID);
- if(NULL == pCX) {
- return(FALSE);
- }
- if(pCX->GetContext()->type != MWContextBrowser) {
- return(FALSE);
- }
-
- // Looks like it will work.
- CDDEWindowChangeItem *pDontCare = new CDDEWindowChangeItem(csServiceName, dwWindowID);
- return(TRUE);
- }
-
- BOOL CDDEWindowChangeItem::DDEUnRegister(CString& csServiceName, DWORD dwWindowID) {
- // Purpose: UnRegister a server to monitor when a window closes.
- // Arguments: csServiceName The server not wanting to monitor.
- // dwWindowID The window to stop monitoring.
- // Returns: BOOL False if never registered, otherwise TRUE.
- // Comments: Destructor, basically.
- // Revision History:
- // 01-19-95 created GAB
- //
-
- // Allright, we need to go through ever entry in our registry.
- POSITION rIndex = m_Registry.GetHeadPosition();
- CWindowChangeItem *pCmp;
- CDDEWindowChangeItem *pDelme = NULL;
- while(rIndex != NULL) {
- pCmp = (CWindowChangeItem *)m_Registry.GetNext(rIndex);
- if(pCmp->GetType() != m_DDE) {
- continue;
- }
- pDelme = (CDDEWindowChangeItem *)pCmp;
-
- if(pDelme->GetServiceName() == csServiceName && pDelme->GetWindowID() == dwWindowID) {
- break;
- }
- pDelme = NULL;
- }
-
- if(pDelme == NULL) {
- return(FALSE);
- }
- else {
- delete(pDelme);
- return(TRUE);
- }
- }
-