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

109 lines
4.1 KiB
C++

// window class name of More Programs pane control
#define WC_MOREPROGRAMS TEXT("Desktop More Programs Pane")
class CMorePrograms
: public IDropTarget
, public CAccessible
{
public:
/*
* Interface stuff...
*/
// *** IUnknown ***
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvOut);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// *** IDropTarget ***
STDMETHODIMP DragEnter(IDataObject *pdto, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
STDMETHODIMP DragOver(DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
STDMETHODIMP DragLeave();
STDMETHODIMP Drop(IDataObject *pdto, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
// *** IAccessible overridden methods ***
STDMETHODIMP get_accRole(VARIANT varChild, VARIANT *pvarRole);
STDMETHODIMP get_accState(VARIANT varChild, VARIANT *pvarState);
STDMETHODIMP get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKeyboardShortcut);
STDMETHODIMP get_accDefaultAction(VARIANT varChild, BSTR *pszDefAction);
STDMETHODIMP accDoDefaultAction(VARIANT varChild);
private:
CMorePrograms(HWND hwnd);
~CMorePrograms();
static LRESULT CALLBACK s_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnNCCreate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnCreate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnDestroy(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnNCDestroy(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnCtlColorBtn(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnDrawItem(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnCommand(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnSysColorChange(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnDisplayChange(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnSettingChange(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnContextMenu(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnEraseBkgnd(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnNotify(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT _OnSMNFindItem(PSMNDIALOGMESSAGE pdm);
LRESULT _OnSMNShowNewAppsTip(PSMNMBOOL psmb);
LRESULT _OnSMNDismiss();
void _InitMetrics();
HWND _CreateTooltip();
void _PopBalloon();
void _TrackShellMenu(DWORD dwFlags);
friend BOOL MorePrograms_RegisterClass();
enum { IDC_BUTTON = 1,
IDC_KEYPRESS = 2 };
private:
HWND _hwnd;
HWND _hwndButton;
HWND _hwndTT;
HWND _hwndBalloon;
HTHEME _hTheme;
HFONT _hf;
HFONT _hfTTBold; // Bold tooltip font
HFONT _hfMarlett;
HBRUSH _hbrBk; // Always a stock object
IDropTargetHelper *_pdth; // For friendly-looking drag/drop
COLORREF _clrText;
COLORREF _clrTextHot;
COLORREF _clrBk;
int _colorHighlight; // GetSysColor
int _colorHighlightText; // GetSysColor
DWORD _tmHoverStart; // When did the user start a drag/drop hover?
// Assorted metrics for painting
int _tmAscent; // Ascent of main font
int _tmAscentMarlett; // Ascent of Marlett font
int _cxText; // width of entire client text
int _cxTextIndent; // distance to beginning of text
int _cxArrow; // width of the arrow image or glyph
MARGINS _margins; // margins for the proglist listview
int _iTextCenterVal; // space added to top of text to center with arrow bitmap
RECT _rcExclude; // Exclusion rectangle for when the menu comes up
// More random stuff
LONG _lRef; // reference count
TCHAR _chMnem; // Mnemonic
BOOL _fMenuOpen; // Is the menu open?
IShellMenu *_psmPrograms; // Cached ShellMenu for perf
// Large things go at the end
TCHAR _szMessage[128];
};