109 lines
4.1 KiB
C
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];
|
||
|
};
|