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
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_
|