Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

133 lines
5.4 KiB

#ifndef _DDBTN__H_
#define _DDBTN__H_
#include <windowsx.h>
#include "dbg.h"
#include "ddbtn.h"
#include "ccom.h"
#include "cddbitem.h"
#ifdef UNDER_CE // macro
#undef DrawIcon
#endif // UNDER_CE
//----------------------------------------------------------------
//Button ID
//----------------------------------------------------------------
#define BID_BUTTON 0x0001
#define BID_DROPDOWN 0x0002
#define BID_ALL (BID_BUTTON | BID_DROPDOWN)
#define BID_UNDEF 0x1000
//----------------------------------------------------------------
//Local Command ID.
//----------------------------------------------------------------
#define CMD_DROPDOWN 0x0100
//----------------------------------------------------------------
//Pushed poped, flat image style definition.
//----------------------------------------------------------------
typedef enum tagIMAGESTYLE {
IS_FLAT = 0,
IS_POPED,
IS_PUSHED,
}IMAGESTYLE;
class CDDButton : public CCommon
{
public:
CDDButton(HINSTANCE hInst, HWND hwndParent, DWORD dwStyle, DWORD wID);
~CDDButton();
#ifndef UNDER_CE
BOOL RegisterWinClass(LPSTR lpstrClassName);
#else // UNDER_CE
BOOL RegisterWinClass(LPTSTR lpstrClassName);
#endif // UNDER_CE
INT MsgCreate (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgPaint (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDestroy (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgTimer (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgMouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgButtonDown (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT MsgButtonUp (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
INT MsgEnable (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgCaptureChanged (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgUserCommand (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgCommand (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgSetFont (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgExitMenuLoop (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgMeasureItem (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDrawItem (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_AddItem (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_InsertItem (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_SetCurSel (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_GetCurSel (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_SetIcon (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_SetText (HWND hwnd, WPARAM wParam, LPARAM lParam);
INT MsgDDB_SetStyle (HWND hwnd, WPARAM wParam, LPARAM lParam);
private:
//----------------------------------------------------------------
// Private method
//----------------------------------------------------------------
INT NotifyToParent (INT notify);
INT GetButtonFromPos(INT xPos, INT yPos);
INT SplitRect (LPRECT lpRc, LPRECT lpButton, LPRECT lpDrop);
INT DrawButton (HDC hDC, LPRECT lpRc);
INT DrawThickEdge (HDC hDC, LPRECT lpRc, IMAGESTYLE imageStyle);
INT DrawThinEdge (HDC hDC, LPRECT lpRc, IMAGESTYLE imageStyle);
INT DrawTriangle (HDC hDC, LPRECT lpRc, IMAGESTYLE imageStyle);
INT DrawIcon (HDC hDC, LPRECT lpRc, IMAGESTYLE imageStyle);
INT DrawBitmap (HDC hDC, LPRECT lpRc, IMAGESTYLE imageStyle);
INT DrawText (HDC hDC, LPRECT lpRc, IMAGESTYLE imageStyle);
INT GetDDBItemCount (VOID);
LPCDDBItem GetDDBItemByIndex(INT index);
LPCDDBItem InsertDDBItem(LPCDDBItem lpCDDBItem, INT index);
INT DropDownItemList(VOID);
INT IncrementIndex (VOID);
INT MenuMeasureItem (HWND hwndOwner, LPMEASUREITEMSTRUCT lpmis);
INT MenuDrawItem (HWND hwndOwner, LPDRAWITEMSTRUCT lpdis);
//----------------------------------------------------------------
//member variable
//----------------------------------------------------------------
HINSTANCE m_hInst;
HWND m_hwndParent;
HWND m_hwndFrame;
DWORD m_dwStyle; //combination of DDBS_XXXX
DWORD m_wID; //Window ID;
BOOL m_fEnable; //Enabled or Disabled.
HFONT m_hFont; //Font handle;
HICON m_hIcon; //Icon handle;
INT m_cxIcon; //Icon width;
INT m_cyIcon; //Icon height;
LPWSTR m_lpwstrText; //Button face text;
BOOL m_fExitMenuLoop;
INT m_bidDown;
BOOL m_fButton;
BOOL m_fDrop;
INT m_curDDBItemIndex; //current selected item index.
LPCDDBItem m_lpCDDBItem; //CDDBItem Linked list head.
INT m_cxDropDown; //
#ifndef UNDER_CE // not support WNDCLASSEX
WNDCLASSEX m_tmpWC; //to reduce stack;
#else // UNDER_CE
WNDCLASS m_tmpWC; //to reduce stack;
#endif // UNDER_CE
RECT m_tmpBtnRc; //to reduce stack;
RECT m_tmpDropRc; //to reduce stack;
RECT m_tmpRect; //to reduce stack;
RECT m_tmpRect2; //to reduce stack;
POINT m_tmpPoint; //to reduce stack;
PAINTSTRUCT m_tmpPs; //to reduce stack;
ICONINFO m_tmpIconInfo; //to reduce stack;
BITMAP m_tmpBitmap; //to reduce stack;
TPMPARAMS m_tmpTpmParams; //to reduce stack;
SIZE m_tmpSize;
MENUITEMINFO m_miInfo;
BOOL m_f16bitOnNT;
#ifndef UNDER_CE // not support NONCLIENTMETRICS
NONCLIENTMETRICS m_ncm;
#endif // UNDER_CE
#ifdef UNDER_CE // Windows CE does not support GetCursorPos
POINT m_ptEventPoint; //ButtonDown/Up Event Point
#endif // UNDER_CE
};
#endif //_DDBTN__H_