gecko-dev/cmd/winfe/slavewnd.h

62 строки
2.0 KiB
C++

/* -*- 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.
*/
#ifndef __SlaveWindow_H
#define __SlaveWindow_H
// Purpose is to create a hidden window.
// External code can register to be called when the
// window receives messages of a particular type.
typedef void (*SlaveWindowCallback)(UINT uMessage, WPARAM wParam, LPARAM lParam);
class CSlaveWindow {
public:
// How to get the HWND, in case you need to target for
// events.
HWND GetWindow();
// How to [un]register to handle an event.
void *Register(UINT uEvent, SlaveWindowCallback swcCallback);
BOOL UnRegister(void *pCookie);
// Needs to be called once the hInstance of the applciation
// is known.
void InitInstance(HINSTANCE hApp);
// Details you do not care about.
private:
HWND m_hWnd;
XP_List *m_pHandlers;
HINSTANCE m_hInstance;
public:
CSlaveWindow();
~CSlaveWindow();
void WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
};
extern CSlaveWindow slavewnd;
// Special messages we like to send to our slave window.
// Must not go over 0x7FFF, WM_USER is 0x0400.
#define SLAVE_BASE (WM_USER + 0x7000)
#define SLAVE_EXITINSTANCE (SLAVE_BASE + 0x0000) // theApp.ExitInstance entered.
#define SLAVE_INITINSTANCE (SLAVE_BASE + 0x0001) // theApp.InitInstance entered.
#endif // __SlaveWindow_H