1*f6dc9357SAndroid Build Coastguard Worker // Windows/Control/Dialog.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_WINDOWS_CONTROL_DIALOG_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_WINDOWS_CONTROL_DIALOG_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../Window.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker namespace NWindows { 9*f6dc9357SAndroid Build Coastguard Worker namespace NControl { 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #ifndef IDCONTINUE 12*f6dc9357SAndroid Build Coastguard Worker #define IDCONTINUE 11 13*f6dc9357SAndroid Build Coastguard Worker #endif 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker class CDialog: public CWindow 16*f6dc9357SAndroid Build Coastguard Worker { 17*f6dc9357SAndroid Build Coastguard Worker // Z7_CLASS_NO_COPY(CDialog) 18*f6dc9357SAndroid Build Coastguard Worker public: CWindow(wnd)19*f6dc9357SAndroid Build Coastguard Worker CDialog(HWND wnd = NULL): CWindow(wnd) {} ~CDialog()20*f6dc9357SAndroid Build Coastguard Worker virtual ~CDialog() {} 21*f6dc9357SAndroid Build Coastguard Worker GetItem(unsigned itemID)22*f6dc9357SAndroid Build Coastguard Worker HWND GetItem(unsigned itemID) const 23*f6dc9357SAndroid Build Coastguard Worker { return GetDlgItem(_window, (int)itemID); } 24*f6dc9357SAndroid Build Coastguard Worker EnableItem(unsigned itemID,bool enable)25*f6dc9357SAndroid Build Coastguard Worker bool EnableItem(unsigned itemID, bool enable) const 26*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(::EnableWindow(GetItem(itemID), BoolToBOOL(enable))); } 27*f6dc9357SAndroid Build Coastguard Worker ShowItem(unsigned itemID,int cmdShow)28*f6dc9357SAndroid Build Coastguard Worker bool ShowItem(unsigned itemID, int cmdShow) const 29*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(::ShowWindow(GetItem(itemID), cmdShow)); } 30*f6dc9357SAndroid Build Coastguard Worker ShowItem_Bool(unsigned itemID,bool show)31*f6dc9357SAndroid Build Coastguard Worker bool ShowItem_Bool(unsigned itemID, bool show) const 32*f6dc9357SAndroid Build Coastguard Worker { return ShowItem(itemID, show ? SW_SHOW: SW_HIDE); } 33*f6dc9357SAndroid Build Coastguard Worker HideItem(unsigned itemID)34*f6dc9357SAndroid Build Coastguard Worker bool HideItem(unsigned itemID) const { return ShowItem(itemID, SW_HIDE); } 35*f6dc9357SAndroid Build Coastguard Worker SetItemText(unsigned itemID,LPCTSTR s)36*f6dc9357SAndroid Build Coastguard Worker bool SetItemText(unsigned itemID, LPCTSTR s) 37*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(SetDlgItemText(_window, (int)itemID, s)); } 38*f6dc9357SAndroid Build Coastguard Worker SetItemTextA(unsigned itemID,LPCSTR s)39*f6dc9357SAndroid Build Coastguard Worker bool SetItemTextA(unsigned itemID, LPCSTR s) 40*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(SetDlgItemTextA(_window, (int)itemID, s)); } 41*f6dc9357SAndroid Build Coastguard Worker SetItemText_Empty(unsigned itemID)42*f6dc9357SAndroid Build Coastguard Worker bool SetItemText_Empty(unsigned itemID) 43*f6dc9357SAndroid Build Coastguard Worker { return SetItemText(itemID, TEXT("")); } 44*f6dc9357SAndroid Build Coastguard Worker 45*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE SetItemText(unsigned itemID,LPCWSTR s)46*f6dc9357SAndroid Build Coastguard Worker bool SetItemText(unsigned itemID, LPCWSTR s) 47*f6dc9357SAndroid Build Coastguard Worker { 48*f6dc9357SAndroid Build Coastguard Worker CWindow window(GetItem(itemID)); 49*f6dc9357SAndroid Build Coastguard Worker return window.SetText(s); 50*f6dc9357SAndroid Build Coastguard Worker } 51*f6dc9357SAndroid Build Coastguard Worker #endif 52*f6dc9357SAndroid Build Coastguard Worker GetItemText(unsigned itemID,LPTSTR string,unsigned maxCount)53*f6dc9357SAndroid Build Coastguard Worker UINT GetItemText(unsigned itemID, LPTSTR string, unsigned maxCount) 54*f6dc9357SAndroid Build Coastguard Worker { return GetDlgItemText(_window, (int)itemID, string, (int)maxCount); } 55*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE 56*f6dc9357SAndroid Build Coastguard Worker /* 57*f6dc9357SAndroid Build Coastguard Worker bool GetItemText(unsigned itemID, LPWSTR string, int maxCount) 58*f6dc9357SAndroid Build Coastguard Worker { 59*f6dc9357SAndroid Build Coastguard Worker CWindow window(GetItem(unsigned)); 60*f6dc9357SAndroid Build Coastguard Worker return window.GetText(string, maxCount); 61*f6dc9357SAndroid Build Coastguard Worker } 62*f6dc9357SAndroid Build Coastguard Worker */ 63*f6dc9357SAndroid Build Coastguard Worker #endif 64*f6dc9357SAndroid Build Coastguard Worker GetItemText(unsigned itemID,UString & s)65*f6dc9357SAndroid Build Coastguard Worker bool GetItemText(unsigned itemID, UString &s) 66*f6dc9357SAndroid Build Coastguard Worker { 67*f6dc9357SAndroid Build Coastguard Worker CWindow window(GetItem(itemID)); 68*f6dc9357SAndroid Build Coastguard Worker return window.GetText(s); 69*f6dc9357SAndroid Build Coastguard Worker } 70*f6dc9357SAndroid Build Coastguard Worker 71*f6dc9357SAndroid Build Coastguard Worker /* 72*f6dc9357SAndroid Build Coastguard Worker bool SetItemInt(unsigned itemID, UINT value, bool isSigned) 73*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(SetDlgItemInt(_window, (int)itemID, value, BoolToBOOL(isSigned))); } 74*f6dc9357SAndroid Build Coastguard Worker */ SetItemUInt(unsigned itemID,UINT value)75*f6dc9357SAndroid Build Coastguard Worker bool SetItemUInt(unsigned itemID, UINT value) 76*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(SetDlgItemInt(_window, (int)itemID, value, FALSE)); } 77*f6dc9357SAndroid Build Coastguard Worker /* 78*f6dc9357SAndroid Build Coastguard Worker bool GetItemInt(unsigned itemID, bool isSigned, UINT &value) 79*f6dc9357SAndroid Build Coastguard Worker { 80*f6dc9357SAndroid Build Coastguard Worker BOOL result; 81*f6dc9357SAndroid Build Coastguard Worker value = GetDlgItemInt(_window, (int)itemID, &result, BoolToBOOL(isSigned)); 82*f6dc9357SAndroid Build Coastguard Worker return BOOLToBool(result); 83*f6dc9357SAndroid Build Coastguard Worker } 84*f6dc9357SAndroid Build Coastguard Worker */ GetItemUInt(unsigned itemID,UINT & value)85*f6dc9357SAndroid Build Coastguard Worker bool GetItemUInt(unsigned itemID, UINT &value) 86*f6dc9357SAndroid Build Coastguard Worker { 87*f6dc9357SAndroid Build Coastguard Worker BOOL result; 88*f6dc9357SAndroid Build Coastguard Worker value = GetDlgItemInt(_window, (int)itemID, &result, FALSE); 89*f6dc9357SAndroid Build Coastguard Worker return BOOLToBool(result); 90*f6dc9357SAndroid Build Coastguard Worker } 91*f6dc9357SAndroid Build Coastguard Worker GetNextGroupItem(HWND control,bool previous)92*f6dc9357SAndroid Build Coastguard Worker HWND GetNextGroupItem(HWND control, bool previous) 93*f6dc9357SAndroid Build Coastguard Worker { return GetNextDlgGroupItem(_window, control, BoolToBOOL(previous)); } GetNextTabItem(HWND control,bool previous)94*f6dc9357SAndroid Build Coastguard Worker HWND GetNextTabItem(HWND control, bool previous) 95*f6dc9357SAndroid Build Coastguard Worker { return GetNextDlgTabItem(_window, control, BoolToBOOL(previous)); } 96*f6dc9357SAndroid Build Coastguard Worker SendMsg_NextDlgCtl(WPARAM wParam,LPARAM lParam)97*f6dc9357SAndroid Build Coastguard Worker LRESULT SendMsg_NextDlgCtl(WPARAM wParam, LPARAM lParam) 98*f6dc9357SAndroid Build Coastguard Worker { return SendMsg(WM_NEXTDLGCTL, wParam, lParam); } SendMsg_NextDlgCtl_HWND(HWND hwnd)99*f6dc9357SAndroid Build Coastguard Worker LRESULT SendMsg_NextDlgCtl_HWND(HWND hwnd) { return SendMsg_NextDlgCtl((WPARAM)hwnd, TRUE); } SendMsg_NextDlgCtl_CtlId(unsigned id)100*f6dc9357SAndroid Build Coastguard Worker LRESULT SendMsg_NextDlgCtl_CtlId(unsigned id) { return SendMsg_NextDlgCtl_HWND(GetItem(id)); } SendMsg_NextDlgCtl_Next()101*f6dc9357SAndroid Build Coastguard Worker LRESULT SendMsg_NextDlgCtl_Next() { return SendMsg_NextDlgCtl(0, FALSE); } SendMsg_NextDlgCtl_Prev()102*f6dc9357SAndroid Build Coastguard Worker LRESULT SendMsg_NextDlgCtl_Prev() { return SendMsg_NextDlgCtl(1, FALSE); } 103*f6dc9357SAndroid Build Coastguard Worker MapRect(LPRECT rect)104*f6dc9357SAndroid Build Coastguard Worker bool MapRect(LPRECT rect) 105*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(MapDialogRect(_window, rect)); } 106*f6dc9357SAndroid Build Coastguard Worker IsMessage(LPMSG message)107*f6dc9357SAndroid Build Coastguard Worker bool IsMessage(LPMSG message) 108*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(IsDialogMessage(_window, message)); } 109*f6dc9357SAndroid Build Coastguard Worker SendItemMessage(unsigned itemID,UINT message,WPARAM wParam,LPARAM lParam)110*f6dc9357SAndroid Build Coastguard Worker LRESULT SendItemMessage(unsigned itemID, UINT message, WPARAM wParam, LPARAM lParam) 111*f6dc9357SAndroid Build Coastguard Worker { return SendDlgItemMessage(_window, (int)itemID, message, wParam, lParam); } 112*f6dc9357SAndroid Build Coastguard Worker CheckButton(unsigned buttonID,UINT checkState)113*f6dc9357SAndroid Build Coastguard Worker bool CheckButton(unsigned buttonID, UINT checkState) 114*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(CheckDlgButton(_window, (int)buttonID, checkState)); } CheckButton(unsigned buttonID,bool checkState)115*f6dc9357SAndroid Build Coastguard Worker bool CheckButton(unsigned buttonID, bool checkState) 116*f6dc9357SAndroid Build Coastguard Worker { return CheckButton(buttonID, UINT(checkState ? BST_CHECKED : BST_UNCHECKED)); } 117*f6dc9357SAndroid Build Coastguard Worker IsButtonChecked_BST(unsigned buttonID)118*f6dc9357SAndroid Build Coastguard Worker UINT IsButtonChecked_BST(unsigned buttonID) const 119*f6dc9357SAndroid Build Coastguard Worker { return IsDlgButtonChecked(_window, (int)buttonID); } IsButtonCheckedBool(unsigned buttonID)120*f6dc9357SAndroid Build Coastguard Worker bool IsButtonCheckedBool(unsigned buttonID) const 121*f6dc9357SAndroid Build Coastguard Worker { return (IsButtonChecked_BST(buttonID) == BST_CHECKED); } 122*f6dc9357SAndroid Build Coastguard Worker CheckRadioButton(unsigned firstButtonID,unsigned lastButtonID,unsigned checkButtonID)123*f6dc9357SAndroid Build Coastguard Worker bool CheckRadioButton(unsigned firstButtonID, unsigned lastButtonID, unsigned checkButtonID) 124*f6dc9357SAndroid Build Coastguard Worker { return BOOLToBool(::CheckRadioButton(_window, 125*f6dc9357SAndroid Build Coastguard Worker (int)firstButtonID, (int)lastButtonID, (int)checkButtonID)); } 126*f6dc9357SAndroid Build Coastguard Worker 127*f6dc9357SAndroid Build Coastguard Worker virtual bool OnMessage(UINT message, WPARAM wParam, LPARAM lParam); OnInit()128*f6dc9357SAndroid Build Coastguard Worker virtual bool OnInit() { return true; } 129*f6dc9357SAndroid Build Coastguard Worker // virtual bool OnCommand2(WPARAM wParam, LPARAM lParam); 130*f6dc9357SAndroid Build Coastguard Worker virtual bool OnCommand(unsigned code, unsigned itemID, LPARAM lParam); OnSize(WPARAM,int,int)131*f6dc9357SAndroid Build Coastguard Worker virtual bool OnSize(WPARAM /* wParam */, int /* xSize */, int /* ySize */) { return false; } OnDestroy()132*f6dc9357SAndroid Build Coastguard Worker virtual bool OnDestroy() { return false; } 133*f6dc9357SAndroid Build Coastguard Worker 134*f6dc9357SAndroid Build Coastguard Worker /* 135*f6dc9357SAndroid Build Coastguard Worker #ifdef UNDER_CE 136*f6dc9357SAndroid Build Coastguard Worker virtual void OnHelp(void *) { OnHelp(); } 137*f6dc9357SAndroid Build Coastguard Worker #else 138*f6dc9357SAndroid Build Coastguard Worker virtual void OnHelp(LPHELPINFO) { OnHelp(); } 139*f6dc9357SAndroid Build Coastguard Worker #endif 140*f6dc9357SAndroid Build Coastguard Worker */ OnHelp()141*f6dc9357SAndroid Build Coastguard Worker virtual void OnHelp() {} 142*f6dc9357SAndroid Build Coastguard Worker 143*f6dc9357SAndroid Build Coastguard Worker virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND); OnOK()144*f6dc9357SAndroid Build Coastguard Worker virtual void OnOK() {} OnContinue()145*f6dc9357SAndroid Build Coastguard Worker virtual void OnContinue() {} OnCancel()146*f6dc9357SAndroid Build Coastguard Worker virtual void OnCancel() {} OnClose()147*f6dc9357SAndroid Build Coastguard Worker virtual void OnClose() {} OnNotify(UINT,LPNMHDR)148*f6dc9357SAndroid Build Coastguard Worker virtual bool OnNotify(UINT /* controlID */, LPNMHDR /* lParam */) { return false; } OnTimer(WPARAM,LPARAM)149*f6dc9357SAndroid Build Coastguard Worker virtual bool OnTimer(WPARAM /* timerID */, LPARAM /* callback */) { return false; } 150*f6dc9357SAndroid Build Coastguard Worker SetMsgResult(LONG_PTR newLongPtr)151*f6dc9357SAndroid Build Coastguard Worker LONG_PTR SetMsgResult(LONG_PTR newLongPtr ) 152*f6dc9357SAndroid Build Coastguard Worker { return SetLongPtr(DWLP_MSGRESULT, newLongPtr); } GetMsgResult()153*f6dc9357SAndroid Build Coastguard Worker LONG_PTR GetMsgResult() const 154*f6dc9357SAndroid Build Coastguard Worker { return GetLongPtr(DWLP_MSGRESULT); } 155*f6dc9357SAndroid Build Coastguard Worker 156*f6dc9357SAndroid Build Coastguard Worker bool GetMargins(int margin, int &x, int &y); 157*f6dc9357SAndroid Build Coastguard Worker int Units_To_Pixels_X(int units); 158*f6dc9357SAndroid Build Coastguard Worker bool GetItemSizes(unsigned id, int &x, int &y); 159*f6dc9357SAndroid Build Coastguard Worker void GetClientRectOfItem(unsigned id, RECT &rect); 160*f6dc9357SAndroid Build Coastguard Worker bool MoveItem(unsigned id, int x, int y, int width, int height, bool repaint = true); 161*f6dc9357SAndroid Build Coastguard Worker bool MoveItem_RECT(unsigned id, const RECT &r, bool repaint = true) 162*f6dc9357SAndroid Build Coastguard Worker { return MoveItem(id, r.left, r.top, RECT_SIZE_X(r), RECT_SIZE_Y(r), repaint); } 163*f6dc9357SAndroid Build Coastguard Worker 164*f6dc9357SAndroid Build Coastguard Worker void NormalizeSize(bool fullNormalize = false); 165*f6dc9357SAndroid Build Coastguard Worker void NormalizePosition(); 166*f6dc9357SAndroid Build Coastguard Worker }; 167*f6dc9357SAndroid Build Coastguard Worker 168*f6dc9357SAndroid Build Coastguard Worker class CModelessDialog: public CDialog 169*f6dc9357SAndroid Build Coastguard Worker { 170*f6dc9357SAndroid Build Coastguard Worker public: 171*f6dc9357SAndroid Build Coastguard Worker bool Create(LPCTSTR templateName, HWND parentWindow); Create(UINT resID,HWND parentWindow)172*f6dc9357SAndroid Build Coastguard Worker bool Create(UINT resID, HWND parentWindow) { return Create(MAKEINTRESOURCEW(resID), parentWindow); } 173*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE 174*f6dc9357SAndroid Build Coastguard Worker bool Create(LPCWSTR templateName, HWND parentWindow); 175*f6dc9357SAndroid Build Coastguard Worker #endif OnOK()176*f6dc9357SAndroid Build Coastguard Worker virtual void OnOK() Z7_override { Destroy(); } OnContinue()177*f6dc9357SAndroid Build Coastguard Worker virtual void OnContinue() Z7_override { Destroy(); } OnCancel()178*f6dc9357SAndroid Build Coastguard Worker virtual void OnCancel() Z7_override { Destroy(); } OnClose()179*f6dc9357SAndroid Build Coastguard Worker virtual void OnClose() Z7_override { Destroy(); } 180*f6dc9357SAndroid Build Coastguard Worker }; 181*f6dc9357SAndroid Build Coastguard Worker 182*f6dc9357SAndroid Build Coastguard Worker class CModalDialog: public CDialog 183*f6dc9357SAndroid Build Coastguard Worker { 184*f6dc9357SAndroid Build Coastguard Worker public: 185*f6dc9357SAndroid Build Coastguard Worker INT_PTR Create(LPCTSTR templateName, HWND parentWindow); Create(UINT resID,HWND parentWindow)186*f6dc9357SAndroid Build Coastguard Worker INT_PTR Create(UINT resID, HWND parentWindow) { return Create(MAKEINTRESOURCEW(resID), parentWindow); } 187*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE 188*f6dc9357SAndroid Build Coastguard Worker INT_PTR Create(LPCWSTR templateName, HWND parentWindow); 189*f6dc9357SAndroid Build Coastguard Worker #endif 190*f6dc9357SAndroid Build Coastguard Worker End(INT_PTR result)191*f6dc9357SAndroid Build Coastguard Worker bool End(INT_PTR result) { return BOOLToBool(::EndDialog(_window, result)); } OnOK()192*f6dc9357SAndroid Build Coastguard Worker virtual void OnOK() Z7_override { End(IDOK); } OnContinue()193*f6dc9357SAndroid Build Coastguard Worker virtual void OnContinue() Z7_override { End(IDCONTINUE); } OnCancel()194*f6dc9357SAndroid Build Coastguard Worker virtual void OnCancel() Z7_override { End(IDCANCEL); } OnClose()195*f6dc9357SAndroid Build Coastguard Worker virtual void OnClose() Z7_override { End(IDCLOSE); } 196*f6dc9357SAndroid Build Coastguard Worker }; 197*f6dc9357SAndroid Build Coastguard Worker 198*f6dc9357SAndroid Build Coastguard Worker class CDialogChildControl: public NWindows::CWindow 199*f6dc9357SAndroid Build Coastguard Worker { 200*f6dc9357SAndroid Build Coastguard Worker // unsigned m_ID; 201*f6dc9357SAndroid Build Coastguard Worker public: Init(const NWindows::NControl::CDialog & parentDialog,unsigned id)202*f6dc9357SAndroid Build Coastguard Worker void Init(const NWindows::NControl::CDialog &parentDialog, unsigned id) 203*f6dc9357SAndroid Build Coastguard Worker { 204*f6dc9357SAndroid Build Coastguard Worker // m_ID = id; 205*f6dc9357SAndroid Build Coastguard Worker Attach(parentDialog.GetItem(id)); 206*f6dc9357SAndroid Build Coastguard Worker } 207*f6dc9357SAndroid Build Coastguard Worker }; 208*f6dc9357SAndroid Build Coastguard Worker 209*f6dc9357SAndroid Build Coastguard Worker bool IsDialogSizeOK(int xSize, int ySize, HWND hwnd = NULL); 210*f6dc9357SAndroid Build Coastguard Worker 211*f6dc9357SAndroid Build Coastguard Worker }} 212*f6dc9357SAndroid Build Coastguard Worker 213*f6dc9357SAndroid Build Coastguard Worker #endif 214