windows-nt/Source/XPSP1/NT/shell/inc/desktopp.h
2020-09-26 16:20:57 +08:00

133 lines
5.5 KiB
C

#ifndef _desktop_h
#define _desktop_h
#include <desktray.h>
// REVIEW: does not seem to be used...
// #define DTM_SIZEDESKTOP (WM_USER + 75)
// #define DTM_EXITWINDOWS (WM_USER + 78)
#define DTM_THREADEXIT (WM_USER + 76)
#define DTM_SAVESTATE (WM_USER + 77)
#define DTM_SHELLSERVICEOBJECTS (WM_USER + 79)
#define DTM_STARTWAIT (WM_USER + 80)
#define DTM_ENDWAIT (WM_USER + 81)
#define DTM_RELEASEPROXYDESKTOP (WM_USER + 82)
#define DTM_RAISE (WM_USER + 83)
#define DTRF_RAISE 0
#define DTRF_LOWER 1
#define DTRF_QUERY 2 // to avoid sending a message to a hung desktop, query passes hwndTray in wParam, and desktop send TRAY a TM_DESKTOPSTATE message
#define DTM_ADDREFPROXYDESKTOP (WM_USER + 84)
#define DTM_CREATESAVEDWINDOWS (WM_USER + 85)
#define DTM_ENUMBANDS (WM_USER + 86)
#ifdef DEBUG
#define DTM_NEXTCTL (WM_USER + 87)
#endif
#define DTM_UIACTIVATEIO (WM_USER + 88)
#define DTM_ONFOCUSCHANGEIS (WM_USER + 89)
#define DTM_SETUPAPPRAN (WM_USER + 90) // NT 5 USER posts this message to us
// END OF IE 4.00 / 4.01 MESSAGES
// BEGINNING OF IE 5.00 MESSAGES
#define DTM_GETVIEWAREAS (WM_USER + 91) // View area is WorkArea minus toolbar areas.
#define DTM_DESKTOPCONTEXTMENU (WM_USER + 92)
#define DTM_UPDATENOW (WM_USER + 93)
#define DTM_QUERYHKCRCHANGED (WM_USER + 94) // ask the desktop if HKCR has changed
#define DTM_MAKEHTMLCHANGES (WM_USER + 95) // Make changes to desktop html using dynamic HTML
#define DTM_STARTPAGEONOFF (WM_USER + 96) // Turn on/off the StartPage.
#define DTM_REFRESHACTIVEDESKTOP (WM_USER + 97) // Refresh the active desktop.
#define DTM_SETAPPSTARTCUR (WM_USER + 98) // UI feedback that we are starting an explorer window.
#define COF_NORMAL 0x00000000
#define COF_CREATENEWWINDOW 0x00000001 // "/N"
#define COF_USEOPENSETTINGS 0x00000002 // "/A"
#define COF_WAITFORPENDING 0x00000004 // Should wait for Pending
#define COF_EXPLORE 0x00000008 // "/E"
#define COF_NEWROOT 0x00000010 // "/ROOT"
#define COF_ROOTCLASS 0x00000020 // "/ROOT,<GUID>"
#define COF_SELECT 0x00000040 // "/SELECT"
#define COF_AUTOMATION 0x00000080 // The user is trying to use automation
#define COF_OPENMASK 0x000000FF
#define COF_NOTUSERDRIVEN 0x00000100 // Not user driven
#define COF_NOTRANSLATE 0x00000200 // Don't ILCombine(pidlRoot, pidl)
#define COF_INPROC 0x00000400 // not used
#define COF_CHANGEROOTOK 0x00000800 // Try Desktop root if not in our root
#define COF_NOUI 0x00001000 // Start background desktop only (no folder/explorer)
#define COF_SHDOCVWFORMAT 0x00002000 // indicates this struct has been converted to abide by shdocvw format.
// this flag is temporary until we rip out all the
#define COF_NOFINDWINDOW 0x00004000 // Don't try to find the window
#define COF_HASHMONITOR 0x00008000 // pidlRoot in IETHREADPARAM struct contains an HMONITOR
#ifdef UNIX
#define COF_HELPMODE 0x00010000 // grabbed from IETHREAD.H (for completeness)
#endif
#define COF_SEPARATEPROCESS 0x00020000 // Start in a new process
#define COF_SHELLFOLDERWINDOW 0x01000000 // This is a folder window, don't append - Microsoft Internet... when no pidl...
#define COF_PARSEPATHW 0x02000000 // the NFI.pszPath needs to be parsed but it is UNICODE
#define COF_FIREEVENTONDDEREG 0x20000000 // Fire an event when DDE server is registered
#define COF_FIREEVENTONCLOSE 0x40000000 // Fire an event when browser window closes
#define COF_IEXPLORE 0x80000000
// this is used by DTM_QUERYHKCRCHANGED and the OpenAs Dialog
// because the OpenAs Dialog is always in a separate process,
// and it needs to cache a cookie in the desktop for the DTM
// the QHKCRID is passed as the wParam in the message.
typedef enum
{
QHKCRID_NONE = 0,
QHKCRID_MIN = 1,
QHKCRID_OPENAS = QHKCRID_MIN,
QHKCRID_VIEWMENUPOPUP,
QHKCRID_MAX
} QHKCRID;
// didnt add PARSEPATHA because only browseui adds it, and it is UNICODE
// but might need it later...
#define COF_PARSEPATH COF_PARSEPATHW
typedef struct
{
LPSTR pszPath;
LPITEMIDLIST pidl;
UINT uFlags; // COF_ bits, (shared with IETHREADPARAM.uFlags
int nShow;
HWND hwndCaller;
DWORD dwHotKey;
LPITEMIDLIST pidlSelect; // Only used if COF_SELECT
LPSTR pszRoot; // Only used for Parse_CmdLine
LPITEMIDLIST pidlRoot; // Only used if COF_NEWROOT
CLSID clsid; // Only used if COF_NEWROOT
CLSID clsidInProc; // Only used if COF_INPROC
} NEWFOLDERINFO, *PNEWFOLDERINFO;
STDAPI_(HANDLE) SHCreateDesktop(IDeskTray* pdtray);
STDAPI_(BOOL) CreateFromDesktop(PNEWFOLDERINFO pfi);
STDAPI_(BOOL) SHCreateFromDesktop(PNEWFOLDERINFO pfi);
STDAPI_(BOOL) SHDesktopMessageLoop(HANDLE hDesktop);
STDAPI_(BOOL) SHExplorerParseCmdLine(PNEWFOLDERINFO pfi);
#define IDT_DDETIMEOUT 1
#define IDT_ENUMHKCR 2
// for the desktop to handle DDE
STDAPI_(LRESULT) DDEHandleMsgs(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
STDAPI_(void) DDEHandleTimeout(HWND hwnd);
#endif