+++ /dev/null
-const char w32taskbar_rcs[] = "$Id: w32taskbar.c,v 1.6 2002/03/26 22:57:10 jongfoster Exp $";
-/*********************************************************************
- *
- * File : $Source: /cvsroot/ijbswa/current/w32taskbar.c,v $
- *
- * Purpose : Functions for creating, setting and destroying the
- * workspace tray icon
- *
- * Copyright : Written by and Copyright (C) 2001-2002 members of
- * the Privoxy team. http://www.privoxy.org/
- *
- * Written by and Copyright (C) 1999 Adam Lock
- * <locka@iol.ie>
- *
- * This program is free software; you can redistribute it
- * and/or modify it under the terms of the GNU General
- * Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will
- * be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * The GNU General Public License should be included with
- * this file. If not, you can view it at
- * http://www.gnu.org/copyleft/gpl.html
- * or write to the Free Software Foundation, Inc., 59
- * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Revisions :
- * $Log: w32taskbar.c,v $
- * Revision 1.6 2002/03/26 22:57:10 jongfoster
- * Web server name should begin www.
- *
- * Revision 1.5 2002/03/24 12:03:47 jongfoster
- * Name change
- *
- * Revision 1.4 2001/11/16 00:46:31 jongfoster
- * Fixing compiler warnings
- *
- * Revision 1.3 2001/05/22 18:56:28 oes
- * CRLF -> LF
- *
- * Revision 1.2 2001/05/20 15:07:54 jongfoster
- * File is now ignored if _WIN_CONSOLE is defined.
- *
- * Revision 1.1.1.1 2001/05/15 13:59:08 oes
- * Initial import of version 2.9.3 source tree
- *
- *
- *********************************************************************/
-\f
-
-#include "config.h"
-
-#include <stdio.h>
-
-#ifndef STRICT
-#define STRICT
-#endif
-#include <windows.h>
-
-#include "w32taskbar.h"
-#include "w32res.h"
-#include "w32log.h"
-
-const char w32taskbar_h_rcs[] = W32TASKBAR_H_VERSION;
-
-#ifndef _WIN_CONSOLE /* entire file */
-
-#define WM_TRAYMSG WM_USER+1
-
-static HMENU g_hmenuTray;
-static HWND g_hwndTrayX;
-
-static LRESULT CALLBACK TrayProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
-
-
-/*********************************************************************
- *
- * Function : CreateTrayWindow
- *
- * Description : Creates and returns the invisible window responsible
- * for processing tray messages.
- *
- * Parameters :
- * 1 : hInstance = instance handle of this application
- *
- * Returns : Handle of the systray window.
- *
- *********************************************************************/
-HWND CreateTrayWindow(HINSTANCE hInstance)
-{
- WNDCLASS wc;
- static const char *szWndName = "PrivoxyTrayWindow";
-
- wc.style = 0;
- wc.lpfnWndProc = TrayProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = 0;
- wc.hCursor = 0;
- wc.hbrBackground = 0;
- wc.lpszMenuName = 0;
- wc.lpszClassName = szWndName;
-
- RegisterClass(&wc);
-
- g_hwndTrayX = CreateWindow(szWndName, szWndName,
- WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- CW_USEDEFAULT, NULL, NULL, hInstance, NULL );
-
- ShowWindow(g_hwndTrayX, SW_HIDE);
- UpdateWindow(g_hwndTrayX);
-
- g_hmenuTray = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_TRAYMENU));
-
- return g_hwndTrayX;
-
-}
-
-
-/*********************************************************************
- *
- * Function : TraySetIcon
- *
- * Description : Sets the tray icon to the specified shape.
- *
- * Parameters :
- * 1 : hwnd = handle of the systray window
- * 2 : uID = user message number to notify systray window
- * 3 : hicon = set the current icon to this handle
- *
- * Returns : Same value as `Shell_NotifyIcon'.
- *
- *********************************************************************/
-BOOL TraySetIcon(HWND hwnd, UINT uID, HICON hicon)
-{
- NOTIFYICONDATA nid;
-
- memset(&nid, 0, sizeof(nid));
-
- nid.cbSize = sizeof(nid);
- nid.hWnd = hwnd;
- nid.uID = uID;
- nid.uFlags = NIF_ICON;
- nid.uCallbackMessage = 0;
- nid.hIcon = hicon;
-
- return( Shell_NotifyIcon(NIM_MODIFY, &nid) );
-
-}
-
-
-/*********************************************************************
- *
- * Function : TrayAddIcon
- *
- * Description : Adds a tray icon.
- *
- * Parameters :
- * 1 : hwnd = handle of the systray window
- * 2 : uID = user message number to notify systray window
- * 3 : hicon = handle of icon to add to systray window
- * 4 : pszToolTip = tool tip when mouse hovers over systray window
- *
- * Returns : Same as `Shell_NotifyIcon'.
- *
- *********************************************************************/
-BOOL TrayAddIcon(HWND hwnd, UINT uID, HICON hicon, const char *pszToolTip)
-{
- NOTIFYICONDATA nid;
-
- memset(&nid, 0, sizeof(nid));
-
- nid.cbSize = sizeof(nid);
- nid.hWnd = hwnd;
- nid.uID = uID;
- nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
- nid.uCallbackMessage = WM_TRAYMSG;
- nid.hIcon = hicon;
-
- if (pszToolTip)
- {
- strcpy(nid.szTip, pszToolTip);
- }
-
- return( Shell_NotifyIcon(NIM_ADD, &nid) );
-
-}
-
-
-/*********************************************************************
- *
- * Function : TrayDeleteIcon
- *
- * Description : Deletes a tray icon.
- *
- * Parameters :
- * 1 : hwnd = handle of the systray window
- * 2 : uID = user message number to notify systray window
- *
- * Returns : Same as `Shell_NotifyIcon'.
- *
- *********************************************************************/
-BOOL TrayDeleteIcon(HWND hwnd, UINT uID)
-{
- NOTIFYICONDATA nid;
-
- memset(&nid, 0, sizeof(nid));
-
- nid.cbSize = sizeof(nid);
- nid.hWnd = hwnd;
- nid.uID = uID;
-
- return( Shell_NotifyIcon(NIM_DELETE, &nid) );
-
-}
-
-
-/*********************************************************************
- *
- * Function : TrayProc
- *
- * Description : Call back procedure processes tray messages.
- *
- * Parameters :
- * 1 : hwnd = handle of the systray window
- * 2 : msg = message number
- * 3 : wParam = first param for this message
- * 4 : lParam = next param for this message
- *
- * Returns : Appropriate M$ window message handler codes.
- *
- *********************************************************************/
-LRESULT CALLBACK TrayProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg)
- {
- case WM_CREATE:
- return 0;
-
- case WM_CLOSE:
- PostQuitMessage(0);
- return 0;
-
- case WM_TRAYMSG:
- {
- /* UINT uID = (UINT) wParam; */
- UINT uMouseMsg = (UINT) lParam;
-
- if (uMouseMsg == WM_RBUTTONDOWN)
- {
- POINT pt;
- HMENU hmenu = GetSubMenu(g_hmenuTray,0);
- GetCursorPos(&pt);
- SetForegroundWindow(g_hwndLogFrame);
- TrackPopupMenu(hmenu, TPM_LEFTALIGN | TPM_TOPALIGN, pt.x, pt.y, 0, g_hwndLogFrame, NULL);
- PostMessage(g_hwndLogFrame, WM_NULL, 0, 0 ) ;
- }
- else if (uMouseMsg == WM_LBUTTONDBLCLK)
- {
- ShowLogWindow(TRUE);
- }
- }
- return 0;
-
- default:
- /* DO NOTHING */
- break;
- }
-
- return DefWindowProc(hwnd, msg, wParam, lParam);
-
-}
-
-
-#endif /* ndef _WIN_CONSOLE - entire file */
-
-/*
- Local Variables:
- tab-width: 3
- end:
-*/