From 2f1b8c756066316c59be907bcd94a73cae5e3a7b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 24 Mar 2015 18:51:51 +0000 Subject: UI Utils classes & templates moved to the core, thus allowing any plugin to use them git-svn-id: http://svn.miranda-ng.org/main/trunk@12492 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/IRCG/IRC_10.vcxproj | 2 - protocols/IRCG/IRC_10.vcxproj.filters | 6 - protocols/IRCG/IRC_12.vcxproj | 2 - protocols/IRCG/IRC_12.vcxproj.filters | 6 - protocols/IRCG/src/irc.h | 1 + protocols/IRCG/src/irc_dlg.h | 142 ++- protocols/IRCG/src/options.cpp | 2 - protocols/IRCG/src/ui_utils.cpp | 1811 --------------------------------- protocols/IRCG/src/ui_utils.h | 1102 -------------------- 9 files changed, 71 insertions(+), 3003 deletions(-) delete mode 100644 protocols/IRCG/src/ui_utils.cpp delete mode 100644 protocols/IRCG/src/ui_utils.h (limited to 'protocols/IRCG') diff --git a/protocols/IRCG/IRC_10.vcxproj b/protocols/IRCG/IRC_10.vcxproj index d3432d8c87..a437b42238 100644 --- a/protocols/IRCG/IRC_10.vcxproj +++ b/protocols/IRCG/IRC_10.vcxproj @@ -209,7 +209,6 @@ - @@ -218,7 +217,6 @@ - diff --git a/protocols/IRCG/IRC_10.vcxproj.filters b/protocols/IRCG/IRC_10.vcxproj.filters index f422854c53..3e850c5326 100644 --- a/protocols/IRCG/IRC_10.vcxproj.filters +++ b/protocols/IRCG/IRC_10.vcxproj.filters @@ -52,9 +52,6 @@ Source Files - - Source Files - Source Files @@ -78,9 +75,6 @@ Header Files - - Header Files - Header Files diff --git a/protocols/IRCG/IRC_12.vcxproj b/protocols/IRCG/IRC_12.vcxproj index e61311d11e..d2d0823f61 100644 --- a/protocols/IRCG/IRC_12.vcxproj +++ b/protocols/IRCG/IRC_12.vcxproj @@ -212,7 +212,6 @@ - @@ -221,7 +220,6 @@ - diff --git a/protocols/IRCG/IRC_12.vcxproj.filters b/protocols/IRCG/IRC_12.vcxproj.filters index ec1a5eb0bd..783c4dbfc0 100644 --- a/protocols/IRCG/IRC_12.vcxproj.filters +++ b/protocols/IRCG/IRC_12.vcxproj.filters @@ -52,9 +52,6 @@ Source Files - - Source Files - Source Files @@ -78,9 +75,6 @@ Header Files - - Header Files - diff --git a/protocols/IRCG/src/irc.h b/protocols/IRCG/src/irc.h index 7af8860637..a666514a85 100644 --- a/protocols/IRCG/src/irc.h +++ b/protocols/IRCG/src/irc.h @@ -72,6 +72,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "m_icolib.h" #include "m_string.h" #include "win2k.h" +#include "m_gui.h" #include "resource.h" diff --git a/protocols/IRCG/src/irc_dlg.h b/protocols/IRCG/src/irc_dlg.h index cd251c5a16..9f18a90862 100644 --- a/protocols/IRCG/src/irc_dlg.h +++ b/protocols/IRCG/src/irc_dlg.h @@ -19,26 +19,24 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "ui_utils.h" - ///////////////////////////////////////////////////////////////////////////////////////// // Dialogs -struct CMessageBoxDlg : public CProtoDlgBase +struct CMessageBoxDlg : public CProtoDlgBase < CIrcProto > { DCCINFO* pdci; - CMessageBoxDlg( CIrcProto* _pro, DCCINFO* _dci ); + CMessageBoxDlg(CIrcProto* _pro, DCCINFO* _dci); CCtrlButton m_Ok; - void OnOk( CCtrlButton* ); + void OnOk(CCtrlButton*); virtual void OnInitDialog(); }; -struct CCoolIrcDlg : public CProtoDlgBase +struct CCoolIrcDlg : public CProtoDlgBase < CIrcProto > { - CCoolIrcDlg( CIrcProto* _pro, int dlgId, HWND parent = NULL ); + CCoolIrcDlg(CIrcProto* _pro, int dlgId, HWND parent = NULL); virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam); @@ -48,24 +46,24 @@ struct CCoolIrcDlg : public CProtoDlgBase struct CWhoisDlg : public CCoolIrcDlg { - CWhoisDlg( CIrcProto* _pro ); + CWhoisDlg(CIrcProto* _pro); CCtrlCombo m_InfoNick; CCtrlEdit m_Reply; CCtrlBase m_Caption, m_AwayTime; CCtrlBase m_InfoName, m_InfoId, m_InfoAddress, m_InfoChannels, m_InfoAuth, - m_InfoServer, m_InfoAway2, m_InfoOther; + m_InfoServer, m_InfoAway2, m_InfoOther; CCtrlButton m_Ping, m_Version, m_Time, m_userInfo, m_Refresh, m_Query; - void ShowMessage( const CIrcMessage* ); - void ShowMessageNoUser( const CIrcMessage* ); + void ShowMessage(const CIrcMessage*); + void ShowMessageNoUser(const CIrcMessage*); - void OnGo( CCtrlButton* ); - void OnQuery( CCtrlButton* ); - void OnPing( CCtrlButton* ); - void OnUserInfo( CCtrlButton* ); - void OnTime( CCtrlButton* ); - void OnVersion( CCtrlButton* ); + void OnGo(CCtrlButton*); + void OnQuery(CCtrlButton*); + void OnPing(CCtrlButton*); + void OnUserInfo(CCtrlButton*); + void OnTime(CCtrlButton*); + void OnVersion(CCtrlButton*); virtual void OnInitDialog(); virtual void OnClose(); @@ -74,7 +72,7 @@ struct CWhoisDlg : public CCoolIrcDlg struct CNickDlg : public CCoolIrcDlg { - CNickDlg( CIrcProto* _pro ); + CNickDlg(CIrcProto* _pro); CCtrlCombo m_Enick; CCtrlButton m_Ok; @@ -82,15 +80,15 @@ struct CNickDlg : public CCoolIrcDlg virtual void OnInitDialog(); virtual void OnDestroy(); - void OnOk( CCtrlButton* ); + void OnOk(CCtrlButton*); }; -struct CListDlg : public CProtoDlgBase +struct CListDlg : public CProtoDlgBase < CIrcProto > { - CListDlg( CIrcProto* _pro ); + CListDlg(CIrcProto* _pro); virtual void OnInitDialog(); - virtual void OnChange( CCtrlBase* ctrl ); + virtual void OnChange(CCtrlBase* ctrl); virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam); virtual void OnDestroy(); virtual int Resizer(UTILRESIZECONTROL *urc); @@ -100,27 +98,27 @@ struct CListDlg : public CProtoDlgBase UINT_PTR m_timer; CCtrlButton m_Join; - void OnJoin( CCtrlButton* ); + void OnJoin(CCtrlButton*); - void List_OnColumnClick( CCtrlListView::TEventInfo* ev ); + void List_OnColumnClick(CCtrlListView::TEventInfo* ev); - void UpdateList( void ); + void UpdateList(void); }; struct CJoinDlg : public CCoolIrcDlg { - CJoinDlg( CIrcProto* _pro ); + CJoinDlg(CIrcProto* _pro); virtual void OnInitDialog(); virtual void OnDestroy(); CCtrlButton m_Ok; - void OnOk( CCtrlButton* ); + void OnOk(CCtrlButton*); }; struct CQuickDlg : public CCoolIrcDlg { - CQuickDlg( CIrcProto* _pro ); + CQuickDlg(CIrcProto* _pro); virtual void OnInitDialog(); virtual void OnDestroy(); @@ -129,7 +127,7 @@ struct CQuickDlg : public CCoolIrcDlg void OnServerCombo(CCtrlData*); CCtrlButton m_Ok; - void OnOk( CCtrlButton* ); + void OnOk(CCtrlButton*); private: struct SERVER_INFO* m_si; @@ -137,7 +135,7 @@ private: struct CManagerDlg : public CCoolIrcDlg { - CManagerDlg( CIrcProto* _pro ); + CManagerDlg(CIrcProto* _pro); CCtrlCheck m_check1, m_check2, m_check3, m_check4, m_check5, m_check6, m_check7, m_check8, m_check9; CCtrlEdit m_key, m_limit; @@ -155,32 +153,32 @@ struct CManagerDlg : public CCoolIrcDlg void OnCheck6(CCtrlData*); void OnRadio(CCtrlData*); - void OnAdd( CCtrlButton* ); - void OnEdit( CCtrlButton* ); - void OnRemove( CCtrlButton* ); + void OnAdd(CCtrlButton*); + void OnEdit(CCtrlButton*); + void OnRemove(CCtrlButton*); - void OnListDblClick( CCtrlListBox* ); - void OnChangeList( CCtrlListBox* ); + void OnListDblClick(CCtrlListBox*); + void OnChangeList(CCtrlListBox*); void OnChangeModes(CCtrlData*); void OnChangeTopic(CCtrlData*); - void OnApplyModes( CCtrlButton* ); - void OnApplyTopic( CCtrlButton* ); + void OnApplyModes(CCtrlButton*); + void OnApplyTopic(CCtrlButton*); void ApplyQuestion(); void CloseQuestion(); - void InitManager( int mode, const TCHAR* window ); + void InitManager(int mode, const TCHAR* window); }; struct CQuestionDlg : public CCoolIrcDlg { - CQuestionDlg( CIrcProto* _pro, CManagerDlg* owner = NULL ); + CQuestionDlg(CIrcProto* _pro, CManagerDlg* owner = NULL); virtual void OnInitDialog(); virtual void OnClose(); CCtrlButton m_Ok; - void OnOk( CCtrlButton* ); + void OnOk(CCtrlButton*); void Activate(); @@ -193,7 +191,7 @@ private: //---- the first property page: Account ------------------------------------------------- -struct CConnectPrefsDlg : public CProtoDlgBase +struct CConnectPrefsDlg : public CProtoDlgBase < CIrcProto > { bool m_serverlistModified; @@ -206,21 +204,21 @@ struct CConnectPrefsDlg : public CProtoDlgBase CCtrlEdit m_identSystem, m_identPort; CCtrlCheck m_forceVisible, m_rejoinOnKick, m_rejoinChannels, m_disableError, - m_address, m_useServer, m_showServer, m_keepAlive, m_autoJoin, - m_oldStyle, m_onlineNotif, m_channelAway, m_enableServer; + m_address, m_useServer, m_showServer, m_keepAlive, m_autoJoin, + m_oldStyle, m_onlineNotif, m_channelAway, m_enableServer; CCtrlEdit m_onlineTimer, m_limit, m_spin1, m_spin2, m_ssl; - CConnectPrefsDlg( CIrcProto* _pro ); + CConnectPrefsDlg(CIrcProto* _pro); - static CDlgBase* Create( void* param ) { return new CConnectPrefsDlg(( CIrcProto* )param ); } + static CDlgBase* Create(void* param) { return new CConnectPrefsDlg((CIrcProto*)param); } virtual void OnInitDialog(); virtual void OnApply(); void OnServerCombo(CCtrlData*); - void OnAddServer( CCtrlButton* ); - void OnDeleteServer( CCtrlButton* ); - void OnEditServer( CCtrlButton* ); + void OnAddServer(CCtrlButton*); + void OnDeleteServer(CCtrlButton*); + void OnEditServer(CCtrlButton*); void OnStartup(CCtrlData*); void OnIdent(CCtrlData*); void OnUseServer(CCtrlData*); @@ -231,16 +229,16 @@ struct CConnectPrefsDlg : public CProtoDlgBase //---- the second property page: DCC/CTCP ----------------------------------------------- -struct CCtcpPrefsDlg : public CProtoDlgBase +struct CCtcpPrefsDlg : public CProtoDlgBase < CIrcProto > { CCtrlCombo m_combo; CCtrlCheck m_slow, m_fast, m_disc, m_passive, m_sendNotice, m_enableIP, m_fromServer; CCtrlEdit m_ip, m_userInfo; CCtrlCheck m_radio1, m_radio2, m_radio3; - CCtcpPrefsDlg( CIrcProto* _pro ); + CCtcpPrefsDlg(CIrcProto* _pro); - static CDlgBase* Create( void* param ) { return new CCtcpPrefsDlg(( CIrcProto* )param ); } + static CDlgBase* Create(void* param) { return new CCtcpPrefsDlg((CIrcProto*)param); } virtual void OnInitDialog(); virtual void OnApply(); @@ -250,7 +248,7 @@ struct CCtcpPrefsDlg : public CProtoDlgBase //---- the third property page: Other --------------------------------------------------- -struct COtherPrefsDlg : public CProtoDlgBase +struct COtherPrefsDlg : public CProtoDlgBase < CIrcProto > { bool m_performlistModified; @@ -260,36 +258,36 @@ struct COtherPrefsDlg : public CProtoDlgBase CCtrlEdit m_pertormEdit, m_quitMessage, m_alias; CCtrlCheck m_perform, m_scripting, m_autodetect; - COtherPrefsDlg( CIrcProto* _pro ); + COtherPrefsDlg(CIrcProto* _pro); - static CDlgBase* Create( void* param ) { return new COtherPrefsDlg(( CIrcProto* )param ); } + static CDlgBase* Create(void* param) { return new COtherPrefsDlg((CIrcProto*)param); } virtual void OnInitDialog(); virtual void OnApply(); virtual void OnDestroy(); - void OnUrl( CCtrlButton* ); + void OnUrl(CCtrlButton*); void OnPerformCombo(CCtrlData*); void OnCodePage(CCtrlData*); void OnPerformEdit(CCtrlData*); void OnPerform(CCtrlData*); - void OnAdd( CCtrlButton* ); - void OnDelete( CCtrlButton* ); + void OnAdd(CCtrlButton*); + void OnDelete(CCtrlButton*); - void addPerformComboValue( int idx, const char* szValueName ); + void addPerformComboValue(int idx, const char* szValueName); }; //---- the fourth property page: Ignore ------------------------------------------------- -struct CIgnorePrefsDlg : public CProtoDlgBase +struct CIgnorePrefsDlg : public CProtoDlgBase < CIrcProto > { CCtrlMButton m_add, m_edit, m_del; CCtrlCheck m_enable, m_ignoreChat, m_ignoreFile, m_ignoreChannel, m_ignoreUnknown; CCtrlListView m_list; - - CIgnorePrefsDlg( CIrcProto* _pro ); - static CDlgBase* Create( void* param ) { return new CIgnorePrefsDlg(( CIrcProto* )param ); } + CIgnorePrefsDlg(CIrcProto* _pro); + + static CDlgBase* Create(void* param) { return new CIgnorePrefsDlg((CIrcProto*)param); } virtual void OnInitDialog(); virtual void OnDestroy(); @@ -297,29 +295,29 @@ struct CIgnorePrefsDlg : public CProtoDlgBase virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam); - void List_OnColumnClick( CCtrlListView::TEventInfo* ); + void List_OnColumnClick(CCtrlListView::TEventInfo*); void OnEnableIgnore(CCtrlData*); void OnIgnoreChat(CCtrlData*); - void OnAdd( CCtrlButton* ); - void OnEdit( CCtrlButton* ); - void OnDelete( CCtrlButton* ); + void OnAdd(CCtrlButton*); + void OnEdit(CCtrlButton*); + void OnDelete(CCtrlButton*); - void FixButtons( void ); - void RebuildList( void ); - void UpdateList( void ); + void FixButtons(void); + void RebuildList(void); + void UpdateList(void); }; -struct CAddIgnoreDlg : public CProtoDlgBase +struct CAddIgnoreDlg : public CProtoDlgBase < CIrcProto > { CCtrlButton m_Ok; CIgnorePrefsDlg* m_owner; TCHAR szOldMask[500]; - CAddIgnoreDlg( CIrcProto* _pro, const TCHAR* mask, CIgnorePrefsDlg* parent ); + CAddIgnoreDlg(CIrcProto* _pro, const TCHAR* mask, CIgnorePrefsDlg* parent); virtual void OnInitDialog(); virtual void OnClose(); - void OnOk( CCtrlButton* ); + void OnOk(CCtrlButton*); }; diff --git a/protocols/IRCG/src/options.cpp b/protocols/IRCG/src/options.cpp index 8633977dd1..4cce32ad83 100644 --- a/protocols/IRCG/src/options.cpp +++ b/protocols/IRCG/src/options.cpp @@ -22,8 +22,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "irc.h" #include -#include "ui_utils.h" - static const CIrcProto* pZero = NULL; void CIrcProto::ReadSettings(TDbSetting* sets, int count) diff --git a/protocols/IRCG/src/ui_utils.cpp b/protocols/IRCG/src/ui_utils.cpp deleted file mode 100644 index a72e9b1384..0000000000 --- a/protocols/IRCG/src/ui_utils.cpp +++ /dev/null @@ -1,1811 +0,0 @@ -/* - -Object UI extensions -Copyright (C) 2008 Victor Pavlychko, George Hazan - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or ( at your option ) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "irc.h" -#include "ui_utils.h" - -extern HINSTANCE hInst; - -CDlgBase::CDlgBase(int idDialog, HWND hwndParent) : - m_controls(1, CCtrlBase::cmp) -{ - m_idDialog = idDialog; - m_hwndParent = hwndParent; - m_hwnd = NULL; - m_first = NULL; - m_isModal = false; - m_initialized = false; - m_autoClose = CLOSE_ON_OK|CLOSE_ON_CANCEL; - m_forceResizable = false; -} - -CDlgBase::~CDlgBase() -{ - if (m_hwnd) - DestroyWindow(m_hwnd); -} - -void CDlgBase::Create() -{ - ShowWindow(CreateDialogParam(hInst, MAKEINTRESOURCE(m_idDialog), m_hwndParent, GlobalDlgProc, (LPARAM)(CDlgBase *)this), SW_HIDE); -} - -void CDlgBase::Show() -{ - ShowWindow(CreateDialogParam(hInst, MAKEINTRESOURCE(m_idDialog), m_hwndParent, GlobalDlgProc, (LPARAM)(CDlgBase *)this), SW_SHOW); -} - -int CDlgBase::DoModal() -{ - m_isModal = true; - return DialogBoxParam(hInst, MAKEINTRESOURCE(m_idDialog), m_hwndParent, GlobalDlgProc, (LPARAM)(CDlgBase *)this); -} - -int CDlgBase::Resizer(UTILRESIZECONTROL*) -{ - return RD_ANCHORX_LEFT|RD_ANCHORY_TOP; -} - -INT_PTR CDlgBase::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_INITDIALOG: - { - m_initialized = false; - TranslateDialogDefault(m_hwnd); - - for ( CCtrlBase* p = m_first; p != NULL; p = p->m_next ) - AddControl( p ); - - NotifyControls(&CCtrlBase::OnInit); - OnInitDialog(); - - m_initialized = true; - return TRUE; - } - - case WM_MEASUREITEM: - { - MEASUREITEMSTRUCT *param = (MEASUREITEMSTRUCT *)lParam; - if (param && param->CtlID) - if (CCtrlBase *ctrl = FindControl(param->CtlID)) - return ctrl->OnMeasureItem(param); - return FALSE; - } - - case WM_DRAWITEM: - { - DRAWITEMSTRUCT *param = (DRAWITEMSTRUCT *)lParam; - if (param && param->CtlID) - if (CCtrlBase *ctrl = FindControl(param->CtlID)) - return ctrl->OnDrawItem(param); - return FALSE; - } - - case WM_DELETEITEM: - { - DELETEITEMSTRUCT *param = (DELETEITEMSTRUCT *)lParam; - if (param && param->CtlID) - if (CCtrlBase *ctrl = FindControl(param->CtlID)) - return ctrl->OnDeleteItem(param); - return FALSE; - } - - case WM_COMMAND: - { - HWND hwndCtrl = (HWND)lParam; - WORD idCtrl = LOWORD(wParam); - WORD idCode = HIWORD(wParam); - if (CCtrlBase *ctrl = FindControl(idCtrl)) { - BOOL result = ctrl->OnCommand(hwndCtrl, idCtrl, idCode); - if ( result != FALSE ) - return result; - } - - if (idCode == BN_CLICKED && - ((idCtrl == IDOK) && (m_autoClose & CLOSE_ON_OK) || - (idCtrl == IDCANCEL) && (m_autoClose & CLOSE_ON_CANCEL))) - { - PostMessage( m_hwnd, WM_CLOSE, 0, 0 ); - } - return FALSE; - } - - case WM_NOTIFY: - { - int idCtrl = wParam; - NMHDR *pnmh = (NMHDR *)lParam; - - if (pnmh->idFrom == 0) - { - if (pnmh->code == PSN_APPLY) - { - NotifyControls(&CCtrlBase::OnApply); - OnApply(); - } - else if (pnmh->code == PSN_RESET) - { - NotifyControls(&CCtrlBase::OnReset); - OnReset(); - } - } - - if (CCtrlBase *ctrl = FindControl(pnmh->idFrom)) - return ctrl->OnNotify(idCtrl, pnmh); - return FALSE; - } - - case WM_SIZE: - { - if (m_forceResizable || (GetWindowLongPtr(m_hwnd, GWL_STYLE) & WS_SIZEBOX)) - { - UTILRESIZEDIALOG urd; - urd.cbSize = sizeof(urd); - urd.hwndDlg = m_hwnd; - urd.hInstance = hInst; - urd.lpTemplate = MAKEINTRESOURCEA(m_idDialog); - urd.lParam = 0; - urd.pfnResizer = GlobalDlgResizer; - CallService(MS_UTILS_RESIZEDIALOG, 0, (LPARAM)&urd); - } - return TRUE; - } - - case WM_CLOSE: - { - m_lresult = FALSE; - OnClose(); - if ( !m_lresult ) - { - if (m_isModal) - EndDialog(m_hwnd, 0); - else - DestroyWindow(m_hwnd); - } - return TRUE; - } - - case WM_DESTROY: - { - OnDestroy(); - NotifyControls(&CCtrlBase::OnDestroy); - - SetWindowLongPtr(m_hwnd, GWLP_USERDATA, 0); - m_hwnd = NULL; - if (m_isModal) - { - m_isModal = false; - } else - { // modeless dialogs MUST be allocated with 'new' - delete this; - } - return TRUE; - } - } - - return FALSE; -} - -INT_PTR CALLBACK CDlgBase::GlobalDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - CDlgBase *wnd = NULL; - if (msg == WM_INITDIALOG) - { - SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); - wnd = (CDlgBase *)lParam; - wnd->m_hwnd = hwnd; - } else - { - wnd = (CDlgBase *)GetWindowLongPtr(hwnd, GWLP_USERDATA); - } - - if (!wnd) return FALSE; - - wnd->m_msg.hwnd = hwnd; - wnd->m_msg.message = msg; - wnd->m_msg.wParam = wParam; - wnd->m_msg.lParam = lParam; - return wnd->DlgProc(msg, wParam, lParam); -} - -int CDlgBase::GlobalDlgResizer(HWND hwnd, LPARAM, UTILRESIZECONTROL *urc) -{ - CDlgBase *wnd = (CDlgBase *)GetWindowLongPtr(hwnd, GWLP_USERDATA); - if (!wnd) return 0; - - return wnd->Resizer(urc); -} - -void CDlgBase::AddControl(CCtrlBase *ctrl) -{ - m_controls.insert(ctrl); -} - -void CDlgBase::NotifyControls(void (CCtrlBase::*fn)()) -{ - for (int i = 0; i < m_controls.getCount(); ++i) - (m_controls[i]->*fn)(); -} - -CCtrlBase* CDlgBase::FindControl(int idCtrl) -{ - CCtrlBase search(NULL, idCtrl); - return m_controls.find(&search); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlCombo class - -CCtrlCombo::CCtrlCombo( CDlgBase* dlg, int ctrlId ) : - CCtrlData( dlg, ctrlId ) -{ -} - -int CCtrlCombo::AddString(const TCHAR *text, LPARAM data) -{ - int iItem = SendMessage(m_hwnd, CB_ADDSTRING, 0, (LPARAM)text); - if ( data ) - SendMessage(m_hwnd, CB_SETITEMDATA, iItem, data); - return iItem; -} - -int CCtrlCombo::AddStringA(const char *text, LPARAM data) -{ - int iItem = SendMessageA(m_hwnd, CB_ADDSTRING, 0, (LPARAM)text); - if ( data ) - SendMessage(m_hwnd, CB_SETITEMDATA, iItem, data); - return iItem; -} - -void CCtrlCombo::DeleteString(int index) -{ SendMessage(m_hwnd, CB_DELETESTRING, index, 0); -} - -int CCtrlCombo::FindString(const TCHAR *str, int index, bool exact ) -{ return SendMessage(m_hwnd, exact?CB_FINDSTRINGEXACT:CB_FINDSTRING, index, (LPARAM)str); -} - -int CCtrlCombo::FindStringA(const char *str, int index, bool exact ) -{ return SendMessageA(m_hwnd, exact?CB_FINDSTRINGEXACT:CB_FINDSTRING, index, (LPARAM)str); -} - -int CCtrlCombo::GetCount() -{ return SendMessage(m_hwnd, CB_GETCOUNT, 0, 0); -} - -int CCtrlCombo::GetCurSel() -{ return SendMessage(m_hwnd, CB_GETCURSEL, 0, 0); -} - -bool CCtrlCombo::GetDroppedState() -{ return SendMessage(m_hwnd, CB_GETDROPPEDSTATE, 0, 0) ? true : false; -} - -LPARAM CCtrlCombo::GetItemData(int index) -{ return SendMessage(m_hwnd, CB_GETITEMDATA, index, 0); -} - -TCHAR* CCtrlCombo::GetItemText(int index) -{ - TCHAR *result = (TCHAR *)mir_alloc(sizeof(TCHAR) * (SendMessage(m_hwnd, CB_GETLBTEXTLEN, index, 0) + 1)); - SendMessage(m_hwnd, CB_GETLBTEXT, index, (LPARAM)result); - return result; -} - -TCHAR* CCtrlCombo::GetItemText(int index, TCHAR *buf, int size) -{ - TCHAR *result = (TCHAR *)_alloca(sizeof(TCHAR) * (SendMessage(m_hwnd, CB_GETLBTEXTLEN, index, 0) + 1)); - SendMessage(m_hwnd, CB_GETLBTEXT, index, (LPARAM)result); - mir_tstrncpy(buf, result, size); - return buf; -} - -int CCtrlCombo::InsertString(TCHAR *text, int pos, LPARAM data) -{ - int iItem = SendMessage(m_hwnd, CB_INSERTSTRING, pos, (LPARAM)text); - SendMessage(m_hwnd, CB_SETITEMDATA, iItem, data); - return iItem; -} - -void CCtrlCombo::ResetContent() -{ SendMessage(m_hwnd, CB_RESETCONTENT, 0, 0); -} - -int CCtrlCombo::SelectString(TCHAR *str) -{ return SendMessage(m_hwnd, CB_SELECTSTRING, 0, (LPARAM)str); -} - -int CCtrlCombo::SetCurSel(int index) -{ return SendMessage(m_hwnd, CB_SETCURSEL, index, 0); -} - -void CCtrlCombo::SetItemData(int index, LPARAM data) -{ SendMessage(m_hwnd, CB_SETITEMDATA, index, data); -} - -void CCtrlCombo::ShowDropdown(bool show) -{ SendMessage(m_hwnd, CB_SHOWDROPDOWN, show ? TRUE : FALSE, 0); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlListBox class - -CCtrlListBox::CCtrlListBox( CDlgBase* dlg, int ctrlId ) : - CCtrlBase( dlg, ctrlId ) -{ -} - -BOOL CCtrlListBox::OnCommand(HWND, WORD, WORD idCode) -{ - switch (idCode) - { - case LBN_DBLCLK: OnDblClick(this); break; - case LBN_SELCANCEL: OnSelCancel(this); break; - case LBN_SELCHANGE: OnSelChange(this); break; - } - return TRUE; -} - -int CCtrlListBox::AddString(TCHAR *text, LPARAM data) -{ - int iItem = SendMessage(m_hwnd, LB_ADDSTRING, 0, (LPARAM)text); - SendMessage(m_hwnd, LB_SETITEMDATA, iItem, data); - return iItem; -} - -void CCtrlListBox::DeleteString(int index) -{ SendMessage(m_hwnd, LB_DELETESTRING, index, 0); -} - -int CCtrlListBox::FindString( TCHAR *str, int index, bool exact) -{ return SendMessage(m_hwnd, exact?LB_FINDSTRINGEXACT:LB_FINDSTRING, index, (LPARAM)str); -} - -int CCtrlListBox::GetCount() -{ return SendMessage(m_hwnd, LB_GETCOUNT, 0, 0); -} - -int CCtrlListBox::GetCurSel() -{ return SendMessage(m_hwnd, LB_GETCURSEL, 0, 0); -} - -LPARAM CCtrlListBox::GetItemData(int index) -{ return SendMessage(m_hwnd, LB_GETITEMDATA, index, 0); -} - -TCHAR* CCtrlListBox::GetItemText(int index) -{ - TCHAR *result = (TCHAR *)mir_alloc(sizeof(TCHAR) * (SendMessage(m_hwnd, LB_GETTEXTLEN, index, 0) + 1)); - SendMessage(m_hwnd, LB_GETTEXT, index, (LPARAM)result); - return result; -} - -TCHAR* CCtrlListBox::GetItemText(int index, TCHAR *buf, int size) -{ - TCHAR *result = (TCHAR *)_alloca(sizeof(TCHAR) * (SendMessage(m_hwnd, LB_GETTEXTLEN, index, 0) + 1)); - SendMessage(m_hwnd, LB_GETTEXT, index, (LPARAM)result); - mir_tstrncpy(buf, result, size); - return buf; -} - -bool CCtrlListBox::GetSel(int index) -{ return SendMessage(m_hwnd, LB_GETSEL, index, 0) ? true : false; -} - -int CCtrlListBox::GetSelCount() -{ return SendMessage(m_hwnd, LB_GETSELCOUNT, 0, 0); -} - -int* CCtrlListBox::GetSelItems(int *items, int count) -{ - SendMessage(m_hwnd, LB_GETSELITEMS, count, (LPARAM)items); - return items; -} - -int* CCtrlListBox::GetSelItems() -{ - int count = GetSelCount() + 1; - int *result = (int *)mir_alloc(sizeof(int) * count); - SendMessage(m_hwnd, LB_GETSELITEMS, count, (LPARAM)result); - result[count-1] = -1; - return result; -} - -int CCtrlListBox::InsertString(TCHAR *text, int pos, LPARAM data) -{ - int iItem = SendMessage(m_hwnd, CB_INSERTSTRING, pos, (LPARAM)text); - SendMessage(m_hwnd, CB_SETITEMDATA, iItem, data); - return iItem; -} - -void CCtrlListBox::ResetContent() -{ SendMessage(m_hwnd, LB_RESETCONTENT, 0, 0); -} - -int CCtrlListBox::SelectString(TCHAR *str) -{ return SendMessage(m_hwnd, LB_SELECTSTRING, 0, (LPARAM)str); -} - -int CCtrlListBox::SetCurSel(int index) -{ return SendMessage(m_hwnd, LB_SETCURSEL, index, 0); -} - -void CCtrlListBox::SetItemData(int index, LPARAM data) -{ SendMessage(m_hwnd, LB_SETITEMDATA, index, data); -} - -void CCtrlListBox::SetSel(int index, bool sel) -{ SendMessage(m_hwnd, LB_SETSEL, sel ? TRUE : FALSE, index); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlCheck class - -CCtrlCheck::CCtrlCheck( CDlgBase* dlg, int ctrlId ) : - CCtrlData( dlg, ctrlId ) -{ -} - -int CCtrlCheck::GetState() -{ - return SendMessage(m_hwnd, BM_GETCHECK, 0, 0); -} - -void CCtrlCheck::SetState(int state) -{ - SendMessage(m_hwnd, BM_SETCHECK, state, 0); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlEdit class - -CCtrlEdit::CCtrlEdit( CDlgBase* dlg, int ctrlId ) : - CCtrlData( dlg, ctrlId ) -{ -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlData class - -CCtrlData::CCtrlData( CDlgBase *wnd, int idCtrl ) : - CCtrlBase( wnd, idCtrl ), - m_dbLink( NULL ) -{ -} - -void CCtrlData::OnInit() -{ - CCtrlBase::OnInit(); - m_changed = false; -} - -void CCtrlData::NotifyChange() -{ - if (!m_parentWnd || m_parentWnd->IsInitialized()) m_changed = true; - if ( m_parentWnd ) { - m_parentWnd->OnChange(this); - if ( m_parentWnd->IsInitialized()) - ::SendMessage( ::GetParent( m_parentWnd->GetHwnd()), PSM_CHANGED, 0, 0 ); - } - - OnChange(this); -} - -void CCtrlData::CreateDbLink( const char* szModuleName, const char* szSetting, BYTE type, DWORD iValue ) -{ - m_dbLink = new CDbLink( szModuleName, szSetting, type, iValue); -} - -void CCtrlData::CreateDbLink( const char* szModuleName, const char* szSetting, TCHAR* szValue ) -{ - m_dbLink = new CDbLink( szModuleName, szSetting, DBVT_TCHAR, szValue ); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlButton - -int CCtrlButton::GetState() -{ return SendMessage(m_hwnd, BM_GETCHECK, 0, 0); -} - -void CCtrlButton::SetState(int state) -{ SendMessage(m_hwnd, BM_SETCHECK, state, 0); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlMButton - -CCtrlMButton::CCtrlMButton( CDlgBase* dlg, int ctrlId, HICON hIcon, const char* tooltip ) : - CCtrlButton( dlg, ctrlId ), - m_hIcon( hIcon ), - m_toolTip( tooltip ) -{ -} - -CCtrlMButton::CCtrlMButton( CDlgBase* dlg, int ctrlId, int iCoreIcon, const char* tooltip ) : - CCtrlButton( dlg, ctrlId ), - m_hIcon( LoadSkinnedIcon(iCoreIcon)), - m_toolTip( tooltip ) -{ -} - -CCtrlMButton::~CCtrlMButton() -{ - if (m_hIcon) - Skin_ReleaseIcon(m_hIcon); -} - -void CCtrlMButton::OnInit() -{ - CCtrlButton::OnInit(); - - SendMessage( m_hwnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)m_hIcon ); - SendMessage( m_hwnd, BUTTONADDTOOLTIP, (WPARAM)m_toolTip, 0); -} - -void CCtrlMButton::MakeFlat() -{ - SendMessage(m_hwnd, BUTTONSETASFLATBTN, TRUE, 0); -} - -void CCtrlMButton::MakePush() -{ - SendMessage(m_hwnd, BUTTONSETASPUSHBTN, TRUE, 0); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlButton - -CCtrlButton::CCtrlButton( CDlgBase* wnd, int idCtrl ) : - CCtrlBase( wnd, idCtrl ) -{ -} - -BOOL CCtrlButton::OnCommand(HWND, WORD, WORD idCode) -{ - if ( idCode == BN_CLICKED || idCode == STN_CLICKED ) - OnClick(this); - return FALSE; -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlHyperlink - -CCtrlHyperlink::CCtrlHyperlink( CDlgBase* wnd, int idCtrl, const char* url ) : - CCtrlBase( wnd, idCtrl ), - m_url(url) -{ -} - -BOOL CCtrlHyperlink::OnCommand(HWND, WORD, WORD) -{ - ShellExecuteA(m_hwnd, "open", m_url, "", "", SW_SHOW); - return FALSE; -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlClc -CCtrlClc::CCtrlClc( CDlgBase* dlg, int ctrlId ): - CCtrlBase(dlg, ctrlId) -{ -} - -BOOL CCtrlClc::OnNotify(int, NMHDR *pnmh) -{ - TEventInfo evt = { this, (NMCLISTCONTROL *)pnmh }; - switch (pnmh->code) - { - case CLN_EXPANDED: OnExpanded(&evt); break; - case CLN_LISTREBUILT: OnListRebuilt(&evt); break; - case CLN_ITEMCHECKED: OnItemChecked(&evt); break; - case CLN_DRAGGING: OnDragging(&evt); break; - case CLN_DROPPED: OnDropped(&evt); break; - case CLN_LISTSIZECHANGE: OnListSizeChange(&evt); break; - case CLN_OPTIONSCHANGED: OnOptionsChanged(&evt); break; - case CLN_DRAGSTOP: OnDragStop(&evt); break; - case CLN_NEWCONTACT: OnNewContact(&evt); break; - case CLN_CONTACTMOVED: OnContactMoved(&evt); break; - case CLN_CHECKCHANGED: OnCheckChanged(&evt); break; - case NM_CLICK: OnClick(&evt); break; - } - return FALSE; -} - -void CCtrlClc::AddContact(MCONTACT hContact) -{ SendMessage(m_hwnd, CLM_ADDCONTACT, hContact, 0); -} - -void CCtrlClc::AddGroup(HANDLE hGroup) -{ SendMessage(m_hwnd, CLM_ADDGROUP, (WPARAM)hGroup, 0); -} - -void CCtrlClc::AutoRebuild() -{ SendMessage(m_hwnd, CLM_AUTOREBUILD, 0, 0); -} - -void CCtrlClc::DeleteItem(HANDLE hItem) -{ SendMessage(m_hwnd, CLM_DELETEITEM, (WPARAM)hItem, 0); -} - -void CCtrlClc::EditLabel(HANDLE hItem) -{ SendMessage(m_hwnd, CLM_EDITLABEL, (WPARAM)hItem, 0); -} - -void CCtrlClc::EndEditLabel(bool save) -{ SendMessage(m_hwnd, CLM_ENDEDITLABELNOW, save ? 0 : 1, 0); -} - -void CCtrlClc::EnsureVisible(HANDLE hItem, bool partialOk) -{ SendMessage(m_hwnd, CLM_ENSUREVISIBLE, (WPARAM)hItem, partialOk ? TRUE : FALSE); -} - -void CCtrlClc::Expand(HANDLE hItem, DWORD flags) -{ SendMessage(m_hwnd, CLM_EXPAND, (WPARAM)hItem, flags); -} - -HANDLE CCtrlClc::FindContact(MCONTACT hContact) -{ return (HANDLE)SendMessage(m_hwnd, CLM_FINDCONTACT, hContact, 0); -} - -HANDLE CCtrlClc::FindGroup(HANDLE hGroup) -{ return (HANDLE)SendMessage(m_hwnd, CLM_FINDGROUP, (WPARAM)hGroup, 0); -} - -COLORREF CCtrlClc::GetBkColor() -{ return (COLORREF)SendMessage(m_hwnd, CLM_GETBKCOLOR, 0, 0); -} - -bool CCtrlClc::GetCheck(HANDLE hItem) -{ return SendMessage(m_hwnd, CLM_GETCHECKMARK, (WPARAM)hItem, 0) ? true : false; -} - -int CCtrlClc::GetCount() -{ return SendMessage(m_hwnd, CLM_GETCOUNT, 0, 0); -} - -HWND CCtrlClc::GetEditControl() -{ return (HWND)SendMessage(m_hwnd, CLM_GETEDITCONTROL, 0, 0); -} - -DWORD CCtrlClc::GetExpand(HANDLE hItem) -{ return SendMessage(m_hwnd, CLM_GETEXPAND, (WPARAM)hItem, 0); -} - -int CCtrlClc::GetExtraColumns() -{ return SendMessage(m_hwnd, CLM_GETEXTRACOLUMNS, 0, 0); -} - -BYTE CCtrlClc::GetExtraImage(HANDLE hItem, int iColumn) -{ return (BYTE)(SendMessage(m_hwnd, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, 0)) & 0xFF); -} - -HIMAGELIST CCtrlClc::GetExtraImageList() -{ return (HIMAGELIST)SendMessage(m_hwnd, CLM_GETEXTRAIMAGELIST, 0, 0); -} - -HFONT CCtrlClc::GetFont(int iFontId) -{ return (HFONT)SendMessage(m_hwnd, CLM_GETFONT, (WPARAM)iFontId, 0); -} - -HANDLE CCtrlClc::GetSelection() -{ return (HANDLE)SendMessage(m_hwnd, CLM_GETSELECTION, 0, 0); -} - -HANDLE CCtrlClc::HitTest(int x, int y, DWORD *hitTest) -{ return (HANDLE)SendMessage(m_hwnd, CLM_HITTEST, (WPARAM)hitTest, MAKELPARAM(x,y)); -} - -void CCtrlClc::SelectItem(HANDLE hItem) -{ SendMessage(m_hwnd, CLM_SELECTITEM, (WPARAM)hItem, 0); -} - -void CCtrlClc::SetBkBitmap(DWORD mode, HBITMAP hBitmap) -{ SendMessage(m_hwnd, CLM_SETBKBITMAP, mode, (LPARAM)hBitmap); -} - -void CCtrlClc::SetBkColor(COLORREF clBack) -{ SendMessage(m_hwnd, CLM_SETBKCOLOR, (WPARAM)clBack, 0); -} - -void CCtrlClc::SetCheck(HANDLE hItem, bool check) -{ SendMessage(m_hwnd, CLM_SETCHECKMARK, (WPARAM)hItem, check ? 1 : 0); -} - -void CCtrlClc::SetExtraColumns(int iColumns) -{ SendMessage(m_hwnd, CLM_SETEXTRACOLUMNS, (WPARAM)iColumns, 0); -} - -void CCtrlClc::SetExtraImage(HANDLE hItem, int iColumn, int iImage) -{ SendMessage(m_hwnd, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, iImage)); -} - -void CCtrlClc::SetExtraImageList(HIMAGELIST hImgList) -{ SendMessage(m_hwnd, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)hImgList); -} - -void CCtrlClc::SetFont(int iFontId, HANDLE hFont, bool bRedraw) -{ SendMessage(m_hwnd, CLM_SETFONT, (WPARAM)hFont, MAKELPARAM(bRedraw ? 1 : 0, iFontId)); -} - -void CCtrlClc::SetIndent(int iIndent) -{ SendMessage(m_hwnd, CLM_SETINDENT, (WPARAM)iIndent, 0); -} - -void CCtrlClc::SetItemText(HANDLE hItem, char *szText) -{ SendMessage(m_hwnd, CLM_SETITEMTEXT, (WPARAM)hItem, (LPARAM)szText); -} - -void CCtrlClc::SetHideEmptyGroups(bool state) -{ SendMessage(m_hwnd, CLM_SETHIDEEMPTYGROUPS, state ? 1 : 0, 0); -} - -void CCtrlClc::SetGreyoutFlags(DWORD flags) -{ SendMessage(m_hwnd, CLM_SETGREYOUTFLAGS, (WPARAM)flags, 0); -} - -bool CCtrlClc::GetHideOfflineRoot() -{ return SendMessage(m_hwnd, CLM_GETHIDEOFFLINEROOT, 0, 0) ? true : false; -} - -void CCtrlClc::SetHideOfflineRoot(bool state) -{ SendMessage(m_hwnd, CLM_SETHIDEOFFLINEROOT, state ? 1 : 0, 9); -} - -void CCtrlClc::SetUseGroups(bool state) -{ SendMessage(m_hwnd, CLM_SETUSEGROUPS, state ? 1 : 0, 0); -} - -void CCtrlClc::SetOfflineModes(DWORD modes) -{ SendMessage(m_hwnd, CLM_SETOFFLINEMODES, modes, 0); -} - -DWORD CCtrlClc::GetExStyle() -{ return SendMessage(m_hwnd, CLM_GETEXSTYLE, 0, 0); -} - -void CCtrlClc::SetExStyle(DWORD exStyle) -{ SendMessage(m_hwnd, CLM_SETEXSTYLE, (WPARAM)exStyle, 0); -} - -int CCtrlClc::GetLefrMargin() -{ return SendMessage(m_hwnd, CLM_GETLEFTMARGIN, 0, 0); -} - -void CCtrlClc::SetLeftMargin(int iMargin) -{ SendMessage(m_hwnd, CLM_SETLEFTMARGIN, (WPARAM)iMargin, 0); -} - -HANDLE CCtrlClc::AddInfoItem(CLCINFOITEM *cii) -{ return (HANDLE)SendMessage(m_hwnd, CLM_ADDINFOITEM, 0, (LPARAM)cii); -} - -int CCtrlClc::GetItemType(HANDLE hItem) -{ return SendMessage(m_hwnd, CLM_GETITEMTYPE, (WPARAM)hItem, 0); -} - -HANDLE CCtrlClc::GetNextItem(HANDLE hItem, DWORD flags) -{ return (HANDLE)SendMessage(m_hwnd, CLM_GETNEXTITEM, (WPARAM)flags, (LPARAM)hItem); -} - -COLORREF CCtrlClc::GetTextColot(int iFontId) -{ return (COLORREF)SendMessage(m_hwnd, CLM_GETTEXTCOLOR, (WPARAM)iFontId, 0); -} - -void CCtrlClc::SetTextColor(int iFontId, COLORREF clText) -{ SendMessage(m_hwnd, CLM_SETTEXTCOLOR, (WPARAM)iFontId, (LPARAM)clText); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlListView - -CCtrlListView::CCtrlListView( CDlgBase* dlg, int ctrlId ) : - CCtrlBase(dlg, ctrlId) -{ -} - -BOOL CCtrlListView::OnNotify(int, NMHDR *pnmh) -{ - TEventInfo evt = { this, pnmh }; - - switch (pnmh->code) { - case NM_DBLCLK: OnDoubleClick(&evt); return TRUE; - case LVN_BEGINDRAG: OnBeginDrag(&evt); return TRUE; - case LVN_BEGINLABELEDIT: OnBeginLabelEdit(&evt); return TRUE; - case LVN_BEGINRDRAG: OnBeginRDrag(&evt); return TRUE; - case LVN_BEGINSCROLL: OnBeginScroll(&evt); return TRUE; - case LVN_COLUMNCLICK: OnColumnClick(&evt); return TRUE; - case LVN_DELETEALLITEMS: OnDeleteAllItems(&evt); return TRUE; - case LVN_DELETEITEM: OnDeleteItem(&evt); return TRUE; - case LVN_ENDLABELEDIT: OnEndLabelEdit(&evt); return TRUE; - case LVN_ENDSCROLL: OnEndScroll(&evt); return TRUE; - case LVN_GETDISPINFO: OnGetDispInfo(&evt); return TRUE; - case LVN_GETINFOTIP: OnGetInfoTip(&evt); return TRUE; - case LVN_HOTTRACK: OnHotTrack(&evt); return TRUE; - //case LVN_INCREMENTALSEARCH: OnIncrementalSearch(&evt); return TRUE; - case LVN_INSERTITEM: OnInsertItem(&evt); return TRUE; - case LVN_ITEMACTIVATE: OnItemActivate(&evt); return TRUE; - case LVN_ITEMCHANGED: OnItemChanged(&evt); return TRUE; - case LVN_ITEMCHANGING: OnItemChanging(&evt); return TRUE; - case LVN_KEYDOWN: OnKeyDown(&evt); return TRUE; - case LVN_MARQUEEBEGIN: OnMarqueeBegin(&evt); return TRUE; - case LVN_SETDISPINFO: OnSetDispInfo(&evt); return TRUE; - } - - return FALSE; -} -DWORD CCtrlListView::ApproximateViewRect(int cx, int cy, int iCount) -{ return ListView_ApproximateViewRect(m_hwnd, cx, cy, iCount); -} -void CCtrlListView::Arrange(UINT code) -{ ListView_Arrange(m_hwnd, code); -} -void CCtrlListView::CancelEditLabel() -{ ListView_CancelEditLabel(m_hwnd); -} -HIMAGELIST CCtrlListView::CreateDragImage(int iItem, LPPOINT lpptUpLeft) -{ return ListView_CreateDragImage(m_hwnd, iItem, lpptUpLeft); -} -void CCtrlListView::DeleteAllItems() -{ ListView_DeleteAllItems(m_hwnd); -} -void CCtrlListView::DeleteColumn(int iCol) -{ ListView_DeleteColumn(m_hwnd, iCol); -} -void CCtrlListView::DeleteItem(int iItem) -{ ListView_DeleteItem(m_hwnd, iItem); -} -HWND CCtrlListView::EditLabel(int iItem) -{ return ListView_EditLabel(m_hwnd, iItem); -} -int CCtrlListView::EnableGroupView(BOOL fEnable) -{ return ListView_EnableGroupView(m_hwnd, fEnable); -} -BOOL CCtrlListView::EnsureVisible(int i, BOOL fPartialOK) -{ return ListView_EnsureVisible(m_hwnd, i, fPartialOK); -} -int CCtrlListView::FindItem(int iStart, const LVFINDINFO *plvfi) -{ return ListView_FindItem(m_hwnd, iStart, plvfi); -} -COLORREF CCtrlListView::GetBkColor() -{ return ListView_GetBkColor(m_hwnd); -} -void CCtrlListView::GetBkImage(LPLVBKIMAGE plvbki) -{ ListView_GetBkImage(m_hwnd, plvbki); -} -UINT CCtrlListView::GetCallbackMask() -{ return ListView_GetCallbackMask(m_hwnd); -} -BOOL CCtrlListView::GetCheckState(UINT iIndex) -{ return ListView_GetCheckState(m_hwnd, iIndex); -} -void CCtrlListView::GetColumn(int iCol, LPLVCOLUMN pcol) -{ ListView_GetColumn(m_hwnd, iCol, pcol); -} -void CCtrlListView::GetColumnOrderArray(int iCount, int *lpiArray) -{ ListView_GetColumnOrderArray(m_hwnd, iCount, lpiArray); -} -int CCtrlListView::GetColumnWidth(int iCol) -{ return ListView_GetColumnWidth(m_hwnd, iCol); -} -int CCtrlListView::GetCountPerPage() -{ return ListView_GetCountPerPage(m_hwnd); -} -HWND CCtrlListView::GetEditControl() -{ return ListView_GetEditControl(m_hwnd); -} -//void CCtrlListView::GetEmptyText(PWSTR pszText, UINT cchText) -//{ ListView_GetEmptyText(m_hwnd, pszText, cchText); -//} -DWORD CCtrlListView::GetExtendedListViewStyle() -{ return ListView_GetExtendedListViewStyle(m_hwnd); -} -//INT CCtrlListView::GetFocusedGroup() -//{ return ListView_GetFocusedGroup(m_hwnd); -//} -//void CCtrlListView::GetFooterInfo(LPLVFOOTERINFO plvfi) -//{ ListView_GetFooterInfo(m_hwnd, plvfi); -//} -//void CCtrlListView::GetFooterItem(UINT iItem, LVFOOTERITEM *pfi) -//{ ListView_GetFooterItem(m_hwnd, iItem, pfi); -//} -//void CCtrlListView::GetFooterItemRect(UINT iItem, RECT *prc) -//{ ListView_GetFooterItemRect(m_hwnd, iItem, prc); -//} -//void CCtrlListView::GetFooterRect(RECT *prc) -//{ ListView_GetFooterRect(m_hwnd, prc); -//} -//int CCtrlListView::GetGroupCount() -//{ return ListView_GetGroupCount(m_hwnd); -//} -//HIMAGELIST CCtrlListView::GetGroupHeaderImageList() -//{ return ListView_GetGroupHeaderImageList(m_hwnd); -//} -//void CCtrlListView::GetGroupInfo(int iGroupId, PLVGROUP pgrp) -//{ ListView_GetGroupInfo(m_hwnd, iGroupId, pgrp); -//} -//void CCtrlListView::GetGroupInfoByIndex(int iIndex, PLVGROUP pgrp) -//{ ListView_GetGroupInfoByIndex(m_hwnd, iIndex, pgrp); -//} -void CCtrlListView::GetGroupMetrics(LVGROUPMETRICS *pGroupMetrics) -{ ListView_GetGroupMetrics(m_hwnd, pGroupMetrics); -} -//BOOL CCtrlListView::GetGroupRect(int iGroupId, RECT *prc) -//{ return ListView_GetGroupRect(m_hwnd, iGroupId, prc); -//} -//UINT CCtrlListView::GetGroupState(UINT dwGroupId, UINT dwMask) -//{ return ListView_GetGroupState(m_hwnd, dwGroupId, dwMask); -//} -HWND CCtrlListView::GetHeader() -{ return ListView_GetHeader(m_hwnd); -} -HCURSOR CCtrlListView::GetHotCursor() -{ return ListView_GetHotCursor(m_hwnd); -} -INT CCtrlListView::GetHotItem() -{ return ListView_GetHotItem(m_hwnd); -} -DWORD CCtrlListView::GetHoverTime() -{ return ListView_GetHoverTime(m_hwnd); -} -HIMAGELIST CCtrlListView::GetImageList(int iImageList) -{ return ListView_GetImageList(m_hwnd, iImageList); -} -BOOL CCtrlListView::GetInsertMark(LVINSERTMARK *plvim) -{ return ListView_GetInsertMark(m_hwnd, plvim); -} -COLORREF CCtrlListView::GetInsertMarkColor() -{ return ListView_GetInsertMarkColor(m_hwnd); -} -int CCtrlListView::GetInsertMarkRect(LPRECT prc) -{ return ListView_GetInsertMarkRect(m_hwnd, prc); -} -BOOL CCtrlListView::GetISearchString(LPSTR lpsz) -{ return ListView_GetISearchString(m_hwnd, lpsz); -} -void CCtrlListView::GetItem(LPLVITEM pitem) -{ ListView_GetItem(m_hwnd, pitem); -} -int CCtrlListView::GetItemCount() -{ return ListView_GetItemCount(m_hwnd); -} -//void CCtrlListView::GetItemIndexRect(LVITEMINDEX *plvii, LONG iSubItem, LONG code, LPRECT prc) -//{ ListView_GetItemIndexRect(m_hwnd, plvii, iSubItem, code, prc); -//} -void CCtrlListView::GetItemPosition(int i, POINT *ppt) -{ ListView_GetItemPosition(m_hwnd, i, ppt); -} -void CCtrlListView::GetItemRect(int i, RECT *prc, int code) -{ ListView_GetItemRect(m_hwnd, i, prc, code); -} -DWORD CCtrlListView::GetItemSpacing(BOOL fSmall) -{ return ListView_GetItemSpacing(m_hwnd, fSmall); -} -UINT CCtrlListView::GetItemState(int i, UINT mask) -{ return ListView_GetItemState(m_hwnd, i, mask); -} -void CCtrlListView::GetItemText(int iItem, int iSubItem, LPTSTR pszText, int cchTextMax) -{ ListView_GetItemText(m_hwnd, iItem, iSubItem, pszText, cchTextMax); -} -int CCtrlListView::GetNextItem(int iStart, UINT flags) -{ return ListView_GetNextItem(m_hwnd, iStart, flags); -} -//BOOL CCtrlListView::GetNextItemIndex(LVITEMINDEX *plvii, LPARAM flags) -//{ return ListView_GetNextItemIndex(m_hwnd, plvii, flags); -//} -BOOL CCtrlListView::GetNumberOfWorkAreas(LPUINT lpuWorkAreas) -{ return ListView_GetNumberOfWorkAreas(m_hwnd, lpuWorkAreas); -} -BOOL CCtrlListView::GetOrigin(LPPOINT lpptOrg) -{ return ListView_GetOrigin(m_hwnd, lpptOrg); -} -COLORREF CCtrlListView::GetOutlineColor() -{ return ListView_GetOutlineColor(m_hwnd); -} -UINT CCtrlListView::GetSelectedColumn() -{ return ListView_GetSelectedColumn(m_hwnd); -} -UINT CCtrlListView::GetSelectedCount() -{ return ListView_GetSelectedCount(m_hwnd); -} -INT CCtrlListView::GetSelectionMark() -{ return ListView_GetSelectionMark(m_hwnd); -} -int CCtrlListView::GetStringWidth(LPCSTR psz) -{ return ListView_GetStringWidth(m_hwnd, psz); -} -BOOL CCtrlListView::GetSubItemRect(int iItem, int iSubItem, int code, LPRECT lpRect) -{ return ListView_GetSubItemRect(m_hwnd, iItem, iSubItem, code, lpRect); -} -COLORREF CCtrlListView::GetTextBkColor() -{ return ListView_GetTextBkColor(m_hwnd); -} -COLORREF CCtrlListView::GetTextColor() -{ return ListView_GetTextColor(m_hwnd); -} -void CCtrlListView::GetTileInfo(PLVTILEINFO plvtinfo) -{ ListView_GetTileInfo(m_hwnd, plvtinfo); -} -void CCtrlListView::GetTileViewInfo(PLVTILEVIEWINFO plvtvinfo) -{ ListView_GetTileViewInfo(m_hwnd, plvtvinfo); -} -HWND CCtrlListView::GetToolTips() -{ return ListView_GetToolTips(m_hwnd); -} -int CCtrlListView::GetTopIndex() -{ return ListView_GetTopIndex(m_hwnd); -} -BOOL CCtrlListView::GetUnicodeFormat() -{ return ListView_GetUnicodeFormat(m_hwnd); -} -DWORD CCtrlListView::GetView() -{ return ListView_GetView(m_hwnd); -} -BOOL CCtrlListView::GetViewRect(RECT *prc) -{ return ListView_GetViewRect(m_hwnd, prc); -} -void CCtrlListView::GetWorkAreas(INT nWorkAreas, LPRECT lprc) -{ ListView_GetWorkAreas(m_hwnd, nWorkAreas, lprc); -} -BOOL CCtrlListView::HasGroup(int dwGroupId) -{ return ListView_HasGroup(m_hwnd, dwGroupId); -} -int CCtrlListView::HitTest(LPLVHITTESTINFO pinfo) -{ return ListView_HitTest(m_hwnd, pinfo); -} -//int CCtrlListView::HitTestEx(LPLVHITTESTINFO pinfo) -//{ return ListView_HitTestEx(m_hwnd, pinfo); -//} -int CCtrlListView::InsertColumn(int iCol, const LPLVCOLUMN pcol) -{ return ListView_InsertColumn(m_hwnd, iCol, pcol); -} -int CCtrlListView::InsertGroup(int index, PLVGROUP pgrp) -{ return ListView_InsertGroup(m_hwnd, index, pgrp); -} -void CCtrlListView::InsertGroupSorted(PLVINSERTGROUPSORTED structInsert) -{ ListView_InsertGroupSorted(m_hwnd, structInsert); -} -int CCtrlListView::InsertItem(const LPLVITEM pitem) -{ return ListView_InsertItem(m_hwnd, pitem); -} -BOOL CCtrlListView::InsertMarkHitTest(LPPOINT point, LVINSERTMARK *plvim) -{ return ListView_InsertMarkHitTest(m_hwnd, point, plvim); -} -BOOL CCtrlListView::IsGroupViewEnabled() -{ return ListView_IsGroupViewEnabled(m_hwnd); -} -//UINT CCtrlListView::IsItemVisible(UINT index) -//{ return ListView_IsItemVisible(m_hwnd, index); -//} -UINT CCtrlListView::MapIDToIndex(UINT id) -{ return ListView_MapIDToIndex(m_hwnd, id); -} -UINT CCtrlListView::MapIndexToID(UINT index) -{ return ListView_MapIndexToID(m_hwnd, index); -} -BOOL CCtrlListView::RedrawItems(int iFirst, int iLast) -{ return ListView_RedrawItems(m_hwnd, iFirst, iLast); -} -void CCtrlListView::RemoveAllGroups() -{ ListView_RemoveAllGroups(m_hwnd); -} -int CCtrlListView::RemoveGroup(int iGroupId) -{ return ListView_RemoveGroup(m_hwnd, iGroupId); -} -BOOL CCtrlListView::Scroll(int dx, int dy) -{ return ListView_Scroll(m_hwnd, dx, dy); -} -BOOL CCtrlListView::SetBkColor(COLORREF clrBk) -{ return ListView_SetBkColor(m_hwnd, clrBk); -} -BOOL CCtrlListView::SetBkImage(LPLVBKIMAGE plvbki) -{ return ListView_SetBkImage(m_hwnd, plvbki); -} -BOOL CCtrlListView::SetCallbackMask(UINT mask) -{ return ListView_SetCallbackMask(m_hwnd, mask); -} -void CCtrlListView::SetCheckState(UINT iIndex, BOOL fCheck) -{ ListView_SetCheckState(m_hwnd, iIndex, fCheck); -} -BOOL CCtrlListView::SetColumn(int iCol, LPLVCOLUMN pcol) -{ return ListView_SetColumn(m_hwnd, iCol, pcol); -} -BOOL CCtrlListView::SetColumnOrderArray(int iCount, int *lpiArray) -{ return ListView_SetColumnOrderArray(m_hwnd, iCount, lpiArray); -} -BOOL CCtrlListView::SetColumnWidth(int iCol, int cx) -{ return ListView_SetColumnWidth(m_hwnd, iCol, cx); -} -void CCtrlListView::SetExtendedListViewStyle(DWORD dwExStyle) -{ ListView_SetExtendedListViewStyle(m_hwnd, dwExStyle); -} -void CCtrlListView::SetExtendedListViewStyleEx(DWORD dwExMask, DWORD dwExStyle) -{ ListView_SetExtendedListViewStyleEx(m_hwnd, dwExMask, dwExStyle); -} -//HIMAGELIST CCtrlListView::SetGroupHeaderImageList(HIMAGELIST himl) -//{ return ListView_SetGroupHeaderImageList(m_hwnd, himl); -//} -int CCtrlListView::SetGroupInfo(int iGroupId, PLVGROUP pgrp) -{ return ListView_SetGroupInfo(m_hwnd, iGroupId, pgrp); -} -void CCtrlListView::SetGroupMetrics(PLVGROUPMETRICS pGroupMetrics) -{ ListView_SetGroupMetrics(m_hwnd, pGroupMetrics); -} -//void CCtrlListView::SetGroupState(UINT dwGroupId, UINT dwMask, UINT dwState) -//{ ListView_SetGroupState(m_hwnd, dwGroupId, dwMask, dwState); -//} -HCURSOR CCtrlListView::SetHotCursor(HCURSOR hCursor) -{ return ListView_SetHotCursor(m_hwnd, hCursor); -} -INT CCtrlListView::SetHotItem(INT iIndex) -{ return ListView_SetHotItem(m_hwnd, iIndex); -} -void CCtrlListView::SetHoverTime(DWORD dwHoverTime) -{ ListView_SetHoverTime(m_hwnd, dwHoverTime); -} -DWORD CCtrlListView::SetIconSpacing(int cx, int cy) -{ return ListView_SetIconSpacing(m_hwnd, cx, cy); -} -HIMAGELIST CCtrlListView::SetImageList(HIMAGELIST himl, int iImageList) -{ return ListView_SetImageList(m_hwnd, himl, iImageList); -} -BOOL CCtrlListView::SetInfoTip(PLVSETINFOTIP plvSetInfoTip) -{ return ListView_SetInfoTip(m_hwnd, plvSetInfoTip); -} -BOOL CCtrlListView::SetInsertMark(LVINSERTMARK *plvim) -{ return ListView_SetInsertMark(m_hwnd, plvim); -} -COLORREF CCtrlListView::SetInsertMarkColor(COLORREF color) -{ return ListView_SetInsertMarkColor(m_hwnd, color); -} -BOOL CCtrlListView::SetItem(const LPLVITEM pitem) -{ return ListView_SetItem(m_hwnd, pitem); -} -void CCtrlListView::SetItemCount(int cItems) -{ ListView_SetItemCount(m_hwnd, cItems); -} -void CCtrlListView::SetItemCountEx(int cItems, DWORD dwFlags) -{ ListView_SetItemCountEx(m_hwnd, cItems, dwFlags); -} -//HRESULT CCtrlListView::SetItemIndexState(LVITEMINDEX *plvii, UINT data, UINT mask) -//{ return ListView_SetItemIndexState(m_hwnd, plvii, data, mask); -//} -BOOL CCtrlListView::SetItemPosition(int i, int x, int y) -{ return ListView_SetItemPosition(m_hwnd, i, x, y); -} -void CCtrlListView::SetItemPosition32(int iItem, int x, int y) -{ ListView_SetItemPosition32(m_hwnd, iItem, x, y); -} -void CCtrlListView::SetItemState(int i, UINT state, UINT mask) -{ ListView_SetItemState(m_hwnd, i, state, mask); -} -void CCtrlListView::SetItemText(int i, int iSubItem, TCHAR *pszText) -{ ListView_SetItemText(m_hwnd, i, iSubItem, pszText); -} -COLORREF CCtrlListView::SetOutlineColor(COLORREF color) -{ return ListView_SetOutlineColor(m_hwnd, color); -} -void CCtrlListView::SetSelectedColumn(int iCol) -{ ListView_SetSelectedColumn(m_hwnd, iCol); -} -INT CCtrlListView::SetSelectionMark(INT iIndex) -{ return ListView_SetSelectionMark(m_hwnd, iIndex); -} -BOOL CCtrlListView::SetTextBkColor(COLORREF clrText) -{ return ListView_SetTextBkColor(m_hwnd, clrText); -} -BOOL CCtrlListView::SetTextColor(COLORREF clrText) -{ return ListView_SetTextColor(m_hwnd, clrText); -} -BOOL CCtrlListView::SetTileInfo(PLVTILEINFO plvtinfo) -{ return ListView_SetTileInfo(m_hwnd, plvtinfo); -} -BOOL CCtrlListView::SetTileViewInfo(PLVTILEVIEWINFO plvtvinfo) -{ return ListView_SetTileViewInfo(m_hwnd, plvtvinfo); -} -HWND CCtrlListView::SetToolTips(HWND ToolTip) -{ return ListView_SetToolTips(m_hwnd, ToolTip); -} -BOOL CCtrlListView::SetUnicodeFormat(BOOL fUnicode) -{ return ListView_SetUnicodeFormat(m_hwnd, fUnicode); -} -int CCtrlListView::SetView(DWORD iView) -{ return ListView_SetView(m_hwnd, iView); -} -void CCtrlListView::SetWorkAreas(INT nWorkAreas, LPRECT lprc) -{ ListView_SetWorkAreas(m_hwnd, nWorkAreas, lprc); -} -int CCtrlListView::SortGroups(PFNLVGROUPCOMPARE pfnGroupCompare, LPVOID plv) -{ return ListView_SortGroups(m_hwnd, pfnGroupCompare, plv); -} -BOOL CCtrlListView::SortItems(PFNLVCOMPARE pfnCompare, LPARAM lParamSort) -{ return ListView_SortItems(m_hwnd, pfnCompare, lParamSort); -} -BOOL CCtrlListView::SortItemsEx(PFNLVCOMPARE pfnCompare, LPARAM lParamSort) -{ return ListView_SortItemsEx(m_hwnd, pfnCompare, lParamSort); -} -INT CCtrlListView::SubItemHitTest(LPLVHITTESTINFO pInfo) -{ return ListView_SubItemHitTest(m_hwnd, pInfo); -} -//INT CCtrlListView::SubItemHitTestEx(LPLVHITTESTINFO plvhti) -//{ return ListView_SubItemHitTestEx(m_hwnd, plvhti); -//} -BOOL CCtrlListView::Update(int iItem) -{ return ListView_Update(m_hwnd, iItem); -} -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlTreeView - -CCtrlTreeView::CCtrlTreeView( CDlgBase* dlg, int ctrlId ): - CCtrlBase(dlg, ctrlId) -{ -} - -BOOL CCtrlTreeView::OnNotify(int, NMHDR *pnmh) -{ - TEventInfo evt = { this, pnmh }; - - switch (pnmh->code) - { - case TVN_BEGINDRAG: OnBeginDrag(&evt); return TRUE; - case TVN_BEGINLABELEDIT: OnBeginLabelEdit(&evt); return TRUE; - case TVN_BEGINRDRAG: OnBeginRDrag(&evt); return TRUE; - case TVN_DELETEITEM: OnDeleteItem(&evt); return TRUE; - case TVN_ENDLABELEDIT: OnEndLabelEdit(&evt); return TRUE; - case TVN_GETDISPINFO: OnGetDispInfo(&evt); return TRUE; - case TVN_GETINFOTIP: OnGetInfoTip(&evt); return TRUE; - case TVN_ITEMEXPANDED: OnItemExpanded(&evt); return TRUE; - case TVN_ITEMEXPANDING: OnItemExpanding(&evt); return TRUE; - case TVN_KEYDOWN: OnKeyDown(&evt); return TRUE; - case TVN_SELCHANGED: OnSelChanged(&evt); return TRUE; - case TVN_SELCHANGING: OnSelChanging(&evt); return TRUE; - case TVN_SETDISPINFO: OnSetDispInfo(&evt); return TRUE; - case TVN_SINGLEEXPAND: OnSingleExpand(&evt); return TRUE; - } - - return FALSE; -} - -void CCtrlTreeView::TranslateItem(HTREEITEM hItem) -{ - TCHAR buf[128]; - TVITEMEX tvi; - - GetItem(hItem, &tvi, buf, SIZEOF(buf)); - tvi.pszText = TranslateTS(tvi.pszText); - SetItem(&tvi); -} - -void CCtrlTreeView::TranslateTree() -{ - HTREEITEM hItem = GetRoot(); - while (hItem) - { - TranslateItem(hItem); - - HTREEITEM hItemTmp = 0; - if (hItemTmp = GetChild(hItem)) - hItem = hItemTmp; - else if (hItemTmp = GetNextSibling(hItem)) - hItem = hItemTmp; - else - { - for (;;) - { - if (!(hItem = GetParent(hItem))) break; - if (hItemTmp = GetNextSibling(hItem)) - { - hItem = hItemTmp; - break; - } - } - } - } -} - -HTREEITEM CCtrlTreeView::FindNamedItem(HTREEITEM hItem, const TCHAR *name) -{ - TVITEMEX tvi = {0}; - TCHAR str[MAX_PATH]; - - if (hItem) - tvi.hItem = GetChild(hItem); - else - tvi.hItem = GetRoot(); - - if (!name) - return tvi.hItem; - - tvi.mask = TVIF_TEXT; - tvi.pszText = str; - tvi.cchTextMax = SIZEOF(str); - - while (tvi.hItem) - { - GetItem(&tvi); - - if (!mir_tstrcmp(tvi.pszText, name)) - return tvi.hItem; - - tvi.hItem = GetNextSibling(tvi.hItem); - } - return NULL; -} - -void CCtrlTreeView::GetItem(HTREEITEM hItem, TVITEMEX *tvi) -{ - memset(tvi, 0, sizeof(*tvi)); - tvi->mask = TVIF_CHILDREN|TVIF_HANDLE|TVIF_IMAGE|TVIF_INTEGRAL|TVIF_PARAM|TVIF_SELECTEDIMAGE|TVIF_STATE; - tvi->hItem = hItem; - GetItem(tvi); -} - -void CCtrlTreeView::GetItem(HTREEITEM hItem, TVITEMEX *tvi, TCHAR *szText, int iTextLength) -{ - memset(tvi, 0, sizeof(*tvi)); - tvi->mask = TVIF_CHILDREN|TVIF_HANDLE|TVIF_IMAGE|TVIF_INTEGRAL|TVIF_PARAM|TVIF_SELECTEDIMAGE|TVIF_STATE|TVIF_TEXT; - tvi->hItem = hItem; - tvi->pszText = szText; - tvi->cchTextMax = iTextLength; - GetItem(tvi); -} - -HIMAGELIST CCtrlTreeView::CreateDragImage(HTREEITEM hItem) -{ return TreeView_CreateDragImage(m_hwnd, hItem); -} - -void CCtrlTreeView::DeleteAllItems() -{ TreeView_DeleteAllItems(m_hwnd); -} - -void CCtrlTreeView::DeleteItem(HTREEITEM hItem) -{ TreeView_DeleteItem(m_hwnd, hItem); -} - -HWND CCtrlTreeView::EditLabel(HTREEITEM hItem) -{ return TreeView_EditLabel(m_hwnd, hItem); -} - -void CCtrlTreeView::EndEditLabelNow(BOOL cancel) -{ TreeView_EndEditLabelNow(m_hwnd, cancel); -} - -void CCtrlTreeView::EnsureVisible(HTREEITEM hItem) -{ TreeView_EnsureVisible(m_hwnd, hItem); -} - -void CCtrlTreeView::Expand(HTREEITEM hItem, DWORD flag) -{ TreeView_Expand(m_hwnd, hItem, flag); -} - -COLORREF CCtrlTreeView::GetBkColor() -{ return TreeView_GetBkColor(m_hwnd); -} - -DWORD CCtrlTreeView::GetCheckState(HTREEITEM hItem) -{ return TreeView_GetCheckState(m_hwnd, hItem); -} - -HTREEITEM CCtrlTreeView::GetChild(HTREEITEM hItem) -{ return TreeView_GetChild(m_hwnd, hItem); -} - -int CCtrlTreeView::GetCount() -{ return TreeView_GetCount(m_hwnd); -} - -HTREEITEM CCtrlTreeView::GetDropHilight() -{ return TreeView_GetDropHilight(m_hwnd); -} - -HWND CCtrlTreeView::GetEditControl() -{ return TreeView_GetEditControl(m_hwnd); -} - -HTREEITEM CCtrlTreeView::GetFirstVisible() -{ return TreeView_GetFirstVisible(m_hwnd); -} - -HIMAGELIST CCtrlTreeView::GetImageList(int iImage) -{ return TreeView_GetImageList(m_hwnd, iImage); -} - -int CCtrlTreeView::GetIndent() -{ return TreeView_GetIndent(m_hwnd); -} - -COLORREF CCtrlTreeView::GetInsertMarkColor() -{ return TreeView_GetInsertMarkColor(m_hwnd); -} - -void CCtrlTreeView::GetItem(TVITEMEX *tvi) -{ TreeView_GetItem(m_hwnd, tvi); -} - -int CCtrlTreeView::GetItemHeight() -{ return TreeView_GetItemHeight(m_hwnd); -} - -void CCtrlTreeView::GetItemRect(HTREEITEM hItem, RECT *rcItem, BOOL fItemRect) -{ TreeView_GetItemRect(m_hwnd, hItem, rcItem, fItemRect); -} - -DWORD CCtrlTreeView::GetItemState(HTREEITEM hItem, DWORD stateMask) -{ return TreeView_GetItemState(m_hwnd, hItem, stateMask); -} - -HTREEITEM CCtrlTreeView::GetLastVisible() -{ return TreeView_GetLastVisible(m_hwnd); -} - -COLORREF CCtrlTreeView::GetLineColor() -{ return TreeView_GetLineColor(m_hwnd); -} - -HTREEITEM CCtrlTreeView::GetNextItem(HTREEITEM hItem, DWORD flag) -{ return TreeView_GetNextItem(m_hwnd, hItem, flag); -} - -HTREEITEM CCtrlTreeView::GetNextSibling(HTREEITEM hItem) -{ return TreeView_GetNextSibling(m_hwnd, hItem); -} - -HTREEITEM CCtrlTreeView::GetNextVisible(HTREEITEM hItem) -{ return TreeView_GetNextVisible(m_hwnd, hItem); -} - -HTREEITEM CCtrlTreeView::GetParent(HTREEITEM hItem) -{ return TreeView_GetParent(m_hwnd, hItem); -} - -HTREEITEM CCtrlTreeView::GetPrevSibling(HTREEITEM hItem) -{ return TreeView_GetPrevSibling(m_hwnd, hItem); -} - -HTREEITEM CCtrlTreeView::GetPrevVisible(HTREEITEM hItem) -{ return TreeView_GetPrevVisible(m_hwnd, hItem); -} - -HTREEITEM CCtrlTreeView::GetRoot() -{ return TreeView_GetRoot(m_hwnd); -} - -DWORD CCtrlTreeView::GetScrollTime() -{ return TreeView_GetScrollTime(m_hwnd); -} - -HTREEITEM CCtrlTreeView::GetSelection() -{ return TreeView_GetSelection(m_hwnd); -} - -COLORREF CCtrlTreeView::GetTextColor() -{ return TreeView_GetTextColor(m_hwnd); -} - -HWND CCtrlTreeView::GetToolTips() -{ return TreeView_GetToolTips(m_hwnd); -} - -BOOL CCtrlTreeView::GetUnicodeFormat() -{ return TreeView_GetUnicodeFormat(m_hwnd); -} - -unsigned CCtrlTreeView::GetVisibleCount() -{ return TreeView_GetVisibleCount(m_hwnd); -} - -HTREEITEM CCtrlTreeView::HitTest(TVHITTESTINFO *hti) -{ return TreeView_HitTest(m_hwnd, hti); -} - -HTREEITEM CCtrlTreeView::InsertItem(TVINSERTSTRUCT *tvis) -{ return TreeView_InsertItem(m_hwnd, tvis); -} - -/* -HTREEITEM CCtrlTreeView::MapAccIDToHTREEITEM(UINT id) -{ return TreeView_MapAccIDToHTREEITEM(m_hwnd, id); -} - -UINT CCtrlTreeView::MapHTREEITEMtoAccID(HTREEITEM hItem) -{ return TreeView_MapHTREEITEMtoAccID(m_hwnd, hItem); -} - -*/ -void CCtrlTreeView::Select(HTREEITEM hItem, DWORD flag) -{ TreeView_Select(m_hwnd, hItem, flag); -} - -void CCtrlTreeView::SelectDropTarget(HTREEITEM hItem) -{ TreeView_SelectDropTarget(m_hwnd, hItem); -} - -void CCtrlTreeView::SelectItem(HTREEITEM hItem) -{ TreeView_SelectItem(m_hwnd, hItem); -} - -void CCtrlTreeView::SelectSetFirstVisible(HTREEITEM hItem) -{ TreeView_SelectSetFirstVisible(m_hwnd, hItem); -} - -COLORREF CCtrlTreeView::SetBkColor(COLORREF clBack) -{ return TreeView_SetBkColor(m_hwnd, clBack); -} - -void CCtrlTreeView::SetCheckState(HTREEITEM hItem, DWORD state) -{ TreeView_SetCheckState(m_hwnd, hItem, state); -} - -void CCtrlTreeView::SetImageList(HIMAGELIST hIml, int iImage) -{ TreeView_SetImageList(m_hwnd, hIml, iImage); -} - -void CCtrlTreeView::SetIndent(int iIndent) -{ TreeView_SetIndent(m_hwnd, iIndent); -} - -void CCtrlTreeView::SetInsertMark(HTREEITEM hItem, BOOL fAfter) -{ TreeView_SetInsertMark(m_hwnd, hItem, fAfter); -} - -COLORREF CCtrlTreeView::SetInsertMarkColor(COLORREF clMark) -{ return TreeView_SetInsertMarkColor(m_hwnd, clMark); -} - -void CCtrlTreeView::SetItem(TVITEMEX *tvi) -{ TreeView_SetItem(m_hwnd, tvi); -} - -void CCtrlTreeView::SetItemHeight(short cyItem) -{ TreeView_SetItemHeight(m_hwnd, cyItem); -} - -void CCtrlTreeView::SetItemState(HTREEITEM hItem, DWORD state, DWORD stateMask) -{ TreeView_SetItemState(m_hwnd, hItem, state, stateMask); -} - -COLORREF CCtrlTreeView::SetLineColor(COLORREF clLine) -{ return TreeView_SetLineColor(m_hwnd, clLine); -} - -void CCtrlTreeView::SetScrollTime(UINT uMaxScrollTime) -{ TreeView_SetScrollTime(m_hwnd, uMaxScrollTime); -} - -COLORREF CCtrlTreeView::SetTextColor(COLORREF clText) -{ return TreeView_SetTextColor(m_hwnd, clText); -} - -HWND CCtrlTreeView::SetToolTips(HWND hwndToolTips) -{ return TreeView_SetToolTips(m_hwnd, hwndToolTips); -} - -BOOL CCtrlTreeView::SetUnicodeFormat(BOOL fUnicode) -{ return TreeView_SetUnicodeFormat(m_hwnd, fUnicode); -} - -void CCtrlTreeView::SortChildren(HTREEITEM hItem, BOOL fRecurse) -{ TreeView_SortChildren(m_hwnd, hItem, fRecurse); -} - -void CCtrlTreeView::SortChildrenCB(TVSORTCB *cb, BOOL fRecurse) -{ TreeView_SortChildrenCB(m_hwnd, cb, fRecurse); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlBase - -CCtrlBase::CCtrlBase(CDlgBase *wnd, int idCtrl) : - m_parentWnd( wnd ), - m_idCtrl( idCtrl ), - m_hwnd( NULL ), - m_wndproc( NULL ) -{ - if ( wnd ) { - m_next = wnd->m_first; - wnd->m_first = this; -} } - -void CCtrlBase::OnInit() -{ - m_hwnd = (m_idCtrl && m_parentWnd && m_parentWnd->GetHwnd()) ? GetDlgItem(m_parentWnd->GetHwnd(), m_idCtrl) : NULL; -} - -void CCtrlBase::OnDestroy() -{ - Unsubclass(); - m_hwnd = NULL; -} - -void CCtrlBase::Enable( int bIsEnable ) -{ - ::EnableWindow( m_hwnd, bIsEnable ); -} - -BOOL CCtrlBase::Enabled() const -{ - return ( m_hwnd ) ? IsWindowEnabled( m_hwnd ) : FALSE; -} - -LRESULT CCtrlBase::SendMsg( UINT Msg, WPARAM wParam, LPARAM lParam ) -{ - return ::SendMessage( m_hwnd, Msg, wParam, lParam ); -} - -void CCtrlBase::SetText(const TCHAR *text) -{ - ::SetWindowText( m_hwnd, text ); -} - -void CCtrlBase::SetTextA(const char *text) -{ - ::SetWindowTextA( m_hwnd, text ); -} - -void CCtrlBase::SetInt(int value) -{ - TCHAR buf[32] = {0}; - mir_sntprintf(buf, SIZEOF(buf), _T("%d"), value); - SetWindowText(m_hwnd, buf); -} - -TCHAR* CCtrlBase::GetText() -{ - int length = GetWindowTextLength(m_hwnd) + 1; - TCHAR *result = (TCHAR *)mir_alloc(length * sizeof(TCHAR)); - GetWindowText(m_hwnd, result, length); - return result; -} - -char* CCtrlBase::GetTextA() -{ - int length = GetWindowTextLength(m_hwnd) + 1; - char *result = (char *)mir_alloc(length * sizeof(char)); - GetWindowTextA(m_hwnd, result, length); - return result; -} - -TCHAR* CCtrlBase::GetText(TCHAR *buf, int size) -{ - GetWindowText(m_hwnd, buf, size); - buf[size-1] = 0; - return buf; -} - -char* CCtrlBase::GetTextA(char *buf, int size) -{ - GetWindowTextA(m_hwnd, buf, size); - buf[size-1] = 0; - return buf; -} - -int CCtrlBase::GetInt() -{ - int length = GetWindowTextLength(m_hwnd) + 1; - TCHAR *result = (TCHAR *)_alloca(length * sizeof(TCHAR)); - GetWindowText(m_hwnd, result, length); - return _ttoi(result); -} - -LRESULT CCtrlBase::CustomWndProc(UINT msg, WPARAM wParam, LPARAM lParam) -{ - if (msg == WM_DESTROY) Unsubclass(); - return CallWindowProc(m_wndproc, m_hwnd, msg, wParam, lParam); -} - -void CCtrlBase::Subclass() -{ - SetWindowLongPtr(m_hwnd, GWLP_USERDATA, (LONG_PTR)this); - m_wndproc = (WNDPROC)SetWindowLongPtr(m_hwnd, GWLP_WNDPROC, (LONG_PTR)GlobalSubclassWndProc); -} - -void CCtrlBase::Unsubclass() -{ - if (m_wndproc) - { - SetWindowLongPtr(m_hwnd, GWLP_WNDPROC, (LONG_PTR)m_wndproc); - SetWindowLongPtr(m_hwnd, GWLP_USERDATA, 0); - m_wndproc = 0; -} } - -///////////////////////////////////////////////////////////////////////////////////////// -// CDbLink class - -CDbLink::CDbLink(const char *szModule, const char *szSetting, BYTE type, DWORD iValue) -{ - m_szModule = mir_strdup(szModule); - m_szSetting = mir_strdup(szSetting); - m_type = type; - m_iDefault = iValue; - m_szDefault = 0; - dbv.type = DBVT_DELETED; -} - -CDbLink::CDbLink(const char *szModule, const char *szSetting, BYTE type, TCHAR *szValue) -{ - m_szModule = mir_strdup(szModule); - m_szSetting = mir_strdup(szSetting); - m_type = type; - m_szDefault = mir_tstrdup(szValue); - dbv.type = DBVT_DELETED; -} - -CDbLink::~CDbLink() -{ - mir_free(m_szModule); - mir_free(m_szSetting); - mir_free(m_szDefault); - if (dbv.type != DBVT_DELETED) - db_free(&dbv); -} - -DWORD CDbLink::LoadInt() -{ - switch (m_type) { - case DBVT_BYTE: return db_get_b(NULL, m_szModule, m_szSetting, m_iDefault); - case DBVT_WORD: return db_get_w(NULL, m_szModule, m_szSetting, m_iDefault); - case DBVT_DWORD: return db_get_dw(NULL, m_szModule, m_szSetting, m_iDefault); - default: return m_iDefault; - } -} - -void CDbLink::SaveInt(DWORD value) -{ - switch (m_type) { - case DBVT_BYTE: db_set_b(NULL, m_szModule, m_szSetting, (BYTE)value); break; - case DBVT_WORD: db_set_w(NULL, m_szModule, m_szSetting, (WORD)value); break; - case DBVT_DWORD: db_set_dw(NULL, m_szModule, m_szSetting, value); break; - } -} - -TCHAR* CDbLink::LoadText() -{ - if (dbv.type != DBVT_DELETED) db_free(&dbv); - if (!db_get_ts(NULL, m_szModule, m_szSetting, &dbv)) - { - if (dbv.type == DBVT_TCHAR) - return dbv.ptszVal; - return m_szDefault; - } - - dbv.type = DBVT_DELETED; - return m_szDefault; -} - -void CDbLink::SaveText(TCHAR *value) -{ - db_set_ts(NULL, m_szModule, m_szSetting, value); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// Misc utilities - -int UIEmulateBtnClick(HWND hwndDlg, UINT idcButton) -{ - if (IsWindowEnabled(GetDlgItem(hwndDlg, idcButton))) - PostMessage(hwndDlg, WM_COMMAND, MAKEWPARAM(idcButton, BN_CLICKED), (LPARAM)GetDlgItem(hwndDlg, idcButton)); - return 0; -} - -void UIShowControls(HWND hwndDlg, int *idList, int nCmdShow) -{ - for (; *idList; ++idList) - ShowWindow(GetDlgItem(hwndDlg, *idList), nCmdShow); -} diff --git a/protocols/IRCG/src/ui_utils.h b/protocols/IRCG/src/ui_utils.h deleted file mode 100644 index ef70439f61..0000000000 --- a/protocols/IRCG/src/ui_utils.h +++ /dev/null @@ -1,1102 +0,0 @@ -/* - -Jabber Protocol Plugin for Miranda IM -Copyright ( C ) 2002-04 Santithorn Bunchua -Copyright ( C ) 2005-08 George Hazan -Copyright ( C ) 2007-08 Maxim Mluhov -Copyright ( C ) 2007-08 Victor Pavlychko - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or ( at your option ) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef __jabber_ui_utils_h__ -#define __jabber_ui_utils_h__ - -#include "m_clc.h" - -#ifndef LPLVCOLUMN -typedef struct tagNMLVSCROLL -{ - NMHDR hdr; - int dx; - int dy; -} NMLVSCROLL; -typedef struct tagLVG -{ - UINT cbSize; - UINT mask; - LPWSTR pszHeader; - int cchHeader; - LPWSTR pszFooter; - int cchFooter; - int iGroupId; - UINT stateMask; - UINT state; - UINT uAlign; -} LVGROUP, *PLVGROUP; -typedef struct tagLVGROUPMETRICS -{ - UINT cbSize; - UINT mask; - UINT Left; - UINT Top; - UINT Right; - UINT Bottom; - COLORREF crLeft; - COLORREF crTop; - COLORREF crRight; - COLORREF crBottom; - COLORREF crHeader; - COLORREF crFooter; -} LVGROUPMETRICS, *PLVGROUPMETRICS; -typedef struct tagLVTILEVIEWINFO -{ - UINT cbSize; - DWORD dwMask; - DWORD dwFlags; - SIZE sizeTile; - int cLines; - RECT rcLabelMargin; -} LVTILEVIEWINFO, *PLVTILEVIEWINFO; -typedef struct tagLVTILEINFO -{ - UINT cbSize; - int iItem; - UINT cColumns; - PUINT puColumns; -} LVTILEINFO, *PLVTILEINFO; -typedef struct -{ - UINT cbSize; - DWORD dwFlags; - int iItem; - DWORD dwReserved; -} LVINSERTMARK, * LPLVINSERTMARK; -typedef int (CALLBACK *PFNLVGROUPCOMPARE)(int, int, void *); -typedef struct tagLVINSERTGROUPSORTED -{ - PFNLVGROUPCOMPARE pfnGroupCompare; - void *pvData; - LVGROUP lvGroup; -} LVINSERTGROUPSORTED, *PLVINSERTGROUPSORTED; -typedef struct tagLVSETINFOTIP -{ - UINT cbSize; - DWORD dwFlags; - LPWSTR pszText; - int iItem; - int iSubItem; -} LVSETINFOTIP, *PLVSETINFOTIP; -#define LPLVCOLUMN LPLVCOLUMNA -#define LPLVITEM LPLVITEMA -#define LVN_BEGINSCROLL (LVN_FIRST-80) -#define LVN_ENDSCROLL (LVN_FIRST-81) -#define LVN_HOTTRACK (LVN_FIRST-21) -#define LVN_MARQUEEBEGIN (LVN_FIRST-56) -#define LVM_MAPINDEXTOID (LVM_FIRST + 180) -#define ListView_MapIndexToID(hwnd, index) \ - (UINT)SendMessage((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, 0) -#define TreeView_GetLineColor(hwnd) \ - (COLORREF)SendMessage((hwnd), TVM_GETLINECOLOR, 0, 0) -#define TreeView_SetLineColor(hwnd, clr) \ - (COLORREF)SendMessage((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr)) -#endif - - -#pragma warning(disable:4355) - -///////////////////////////////////////////////////////////////////////////////////////// -// Callbacks - -struct CCallbackImp -{ - struct CDummy - { int foo; - }; - -public: - __inline CCallbackImp(): m_object(NULL), m_func(NULL) {} - - __inline CCallbackImp(const CCallbackImp &other): m_object(other.m_object), m_func(other.m_func) {} - __inline CCallbackImp &operator=(const CCallbackImp &other) { m_object = other.m_object; m_func = other.m_func; return *this; } - - __inline bool operator==(const CCallbackImp &other) const { return (m_object == other.m_object) && (m_func == other.m_func); } - __inline bool operator!=(const CCallbackImp &other) const { return (m_object != other.m_object) || (m_func != other.m_func); } - - __inline operator bool() const { return m_object && m_func; } - - __inline bool CheckObject(void *object) const { return (object == m_object) ? true : false; } - -protected: - template - __inline CCallbackImp(TClass *object, void ( TClass::*func)(TArgument *argument)): m_object(( CDummy* )object), m_func((TFnCallback)func) {} - - __inline void Invoke(void *argument) const { if (m_func && m_object) (m_object->*m_func)(argument); } - -private: - typedef void ( CDummy::*TFnCallback)( void *argument ); - - CDummy* m_object; - TFnCallback m_func; -}; - -template -struct CCallback: public CCallbackImp -{ -public: - __inline CCallback() {} - - template - __inline CCallback(TClass *object, void ( TClass::*func)(TArgument *argument)): CCallbackImp(object, func) {} - - __inline CCallback& operator=( const CCallbackImp& x ) { CCallbackImp::operator =( x ); return *this; } - - __inline void operator()(TArgument *argument) const { Invoke((void *)argument); } -}; - -template -__inline CCallback Callback(TClass *object, void (TClass::*func)(TArgument *argument)) - { return CCallback(object, func); } - -///////////////////////////////////////////////////////////////////////////////////////// -// CDlgBase - base dialog class - -class CDlgBase -{ - friend class CCtrlBase; - friend class CCtrlData; - -public: - CDlgBase(int idDialog, HWND hwndParent); - virtual ~CDlgBase(); - - // general utilities - void Create(); - void Show(); - int DoModal(); - - __inline HWND GetHwnd() const { return m_hwnd; } - __inline bool IsInitialized() const { return m_initialized; } - __inline void Close() { SendMessage(m_hwnd, WM_CLOSE, 0, 0); } - __inline const MSG *ActiveMessage() const { return &m_msg; } - - // dynamic creation support (mainly to avoid leaks in options) - struct CreateParam - { - CDlgBase *(*create)(void *param); - void *param; - }; - static INT_PTR CALLBACK DynamicDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) - { - if (msg == WM_INITDIALOG) - { - CreateParam *param = (CreateParam *)lParam; - CDlgBase *wnd = param->create(param->param); - SetWindowLongPtr(hwnd, DWLP_DLGPROC, (LONG_PTR)GlobalDlgProc); - return GlobalDlgProc(hwnd, msg, wParam, (LPARAM)wnd); - } - - return FALSE; - } - - LRESULT m_lresult; - -protected: - HWND m_hwnd; - HWND m_hwndParent; - int m_idDialog; - MSG m_msg; - bool m_isModal; - bool m_initialized; - bool m_forceResizable; - - enum { CLOSE_ON_OK = 0x1, CLOSE_ON_CANCEL = 0x2 }; - BYTE m_autoClose; // automatically close dialog on IDOK/CANCEL commands. default: CLOSE_ON_OK|CLOSE_ON_CANCEL - - CCtrlBase* m_first; - - // override this handlers to provide custom functionality - // general messages - virtual void OnInitDialog() { } - virtual void OnClose() { } - virtual void OnDestroy() { } - - // miranda-related stuff - virtual int Resizer(UTILRESIZECONTROL *urc); - virtual void OnApply() {} - virtual void OnReset() {} - virtual void OnChange(CCtrlBase*) {} - - // main dialog procedure - virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam); - - // resister controls - void AddControl(CCtrlBase *ctrl); - -private: - LIST m_controls; - - void NotifyControls(void (CCtrlBase::*fn)()); - CCtrlBase *FindControl(int idCtrl); - - static INT_PTR CALLBACK GlobalDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - static int GlobalDlgResizer(HWND hwnd, LPARAM lParam, UTILRESIZECONTROL *urc); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CDbLink - -class CDbLink -{ - char *m_szModule; - char *m_szSetting; - BYTE m_type; - - DWORD m_iDefault; - TCHAR *m_szDefault; - - DBVARIANT dbv; - -public: - CDbLink(const char *szModule, const char *szSetting, BYTE type, DWORD iValue); - CDbLink(const char *szModule, const char *szSetting, BYTE type, TCHAR *szValue); - ~CDbLink(); - - __inline BYTE GetDataType() { return m_type; } - - DWORD LoadInt(); - void SaveInt(DWORD value); - - TCHAR *LoadText(); - void SaveText(TCHAR *value); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlBase - -class CCtrlBase -{ - friend class CDlgBase; - -public: - CCtrlBase(CDlgBase *wnd, int idCtrl ); - virtual ~CCtrlBase() { Unsubclass(); } - - __inline int GetCtrlId() const { return m_idCtrl; } - __inline HWND GetHwnd() const { return m_hwnd; } - __inline CDlgBase *GetParent() { return m_parentWnd; } - - void Enable( int bIsEnable = true ); - __inline void Disable() { Enable( false ); } - BOOL Enabled( void ) const; - - LRESULT SendMsg( UINT Msg, WPARAM wParam, LPARAM lParam ); - - void SetText(const TCHAR *text); - void SetTextA(const char *text); - void SetInt(int value); - - TCHAR *GetText(); - char *GetTextA(); - - TCHAR *GetText(TCHAR *buf, int size); - char *GetTextA(char *buf, int size); - - int GetInt(); - - virtual BOOL OnCommand(HWND /*hwndCtrl*/, WORD /*idCtrl*/, WORD /*idCode*/) { return FALSE; } - virtual BOOL OnNotify(int /*idCtrl*/, NMHDR* /*pnmh*/) { return FALSE; } - - virtual BOOL OnMeasureItem(MEASUREITEMSTRUCT*) { return FALSE; } - virtual BOOL OnDrawItem(DRAWITEMSTRUCT*) { return FALSE; } - virtual BOOL OnDeleteItem(DELETEITEMSTRUCT*) { return FALSE; } - - virtual void OnInit(); - virtual void OnDestroy(); - - virtual void OnApply() {} - virtual void OnReset() {} - - static int cmp(const CCtrlBase *c1, const CCtrlBase *c2) - { - if (c1->m_idCtrl < c2->m_idCtrl) return -1; - if (c1->m_idCtrl > c2->m_idCtrl) return +1; - return 0; - } - -protected: - HWND m_hwnd; - int m_idCtrl; - CCtrlBase* m_next; - CDlgBase* m_parentWnd; - - virtual LRESULT CustomWndProc(UINT msg, WPARAM wParam, LPARAM lParam); - void Subclass(); - void Unsubclass(); - -private: - WNDPROC m_wndproc; - static LRESULT CALLBACK GlobalSubclassWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) - { - if (CCtrlBase *ctrl = (CCtrlBase*)GetWindowLongPtr(hwnd, GWLP_USERDATA)) - if (ctrl) - return ctrl->CustomWndProc(msg, wParam, lParam); - - return DefWindowProc(hwnd, msg, wParam, lParam); - } -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlButton - -class CCtrlButton : public CCtrlBase -{ -public: - CCtrlButton( CDlgBase* dlg, int ctrlId ); - - virtual BOOL OnCommand(HWND hwndCtrl, WORD idCtrl, WORD idCode); - - CCallback OnClick; - - int GetState(); - void SetState(int state); -}; - -class CCtrlMButton : public CCtrlButton -{ -public: - CCtrlMButton( CDlgBase* dlg, int ctrlId, HICON hIcon, const char* tooltip ); - CCtrlMButton( CDlgBase* dlg, int ctrlId, int iCoreIcon, const char* tooltip ); - ~CCtrlMButton(); - - void MakeFlat(); - void MakePush(); - - virtual void OnInit(); - -protected: - HICON m_hIcon; - const char* m_toolTip; -}; - -class CCtrlHyperlink : public CCtrlBase -{ -public: - CCtrlHyperlink( CDlgBase* dlg, int ctrlId, const char* url ); - - virtual BOOL OnCommand(HWND hwndCtrl, WORD idCtrl, WORD idCode); - -protected: - const char* m_url; -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlClc -class CCtrlClc: public CCtrlBase -{ -public: - CCtrlClc( CDlgBase* dlg, int ctrlId ); - - void AddContact(MCONTACT hContact); - void AddGroup(HANDLE hGroup); - void AutoRebuild(); - void DeleteItem(HANDLE hItem); - void EditLabel(HANDLE hItem); - void EndEditLabel(bool save); - void EnsureVisible(HANDLE hItem, bool partialOk); - void Expand(HANDLE hItem, DWORD flags); - HANDLE FindContact(MCONTACT hContact); - HANDLE FindGroup(HANDLE hGroup); - COLORREF GetBkColor(); - bool GetCheck(HANDLE hItem); - int GetCount(); - HWND GetEditControl(); - DWORD GetExpand(HANDLE hItem); - int GetExtraColumns(); - BYTE GetExtraImage(HANDLE hItem, int iColumn); - HIMAGELIST GetExtraImageList(); - HFONT GetFont(int iFontId); - HANDLE GetSelection(); - HANDLE HitTest(int x, int y, DWORD *hitTest); - void SelectItem(HANDLE hItem); - void SetBkBitmap(DWORD mode, HBITMAP hBitmap); - void SetBkColor(COLORREF clBack); - void SetCheck(HANDLE hItem, bool check); - void SetExtraColumns(int iColumns); - void SetExtraImage(HANDLE hItem, int iColumn, int iImage); - void SetExtraImageList(HIMAGELIST hImgList); - void SetFont(int iFontId, HANDLE hFont, bool bRedraw); - void SetIndent(int iIndent); - void SetItemText(HANDLE hItem, char *szText); - void SetHideEmptyGroups(bool state); - void SetGreyoutFlags(DWORD flags); - bool GetHideOfflineRoot(); - void SetHideOfflineRoot(bool state); - void SetUseGroups(bool state); - void SetOfflineModes(DWORD modes); - DWORD GetExStyle(); - void SetExStyle(DWORD exStyle); - int GetLefrMargin(); - void SetLeftMargin(int iMargin); - HANDLE AddInfoItem(CLCINFOITEM *cii); - int GetItemType(HANDLE hItem); - HANDLE GetNextItem(HANDLE hItem, DWORD flags); - COLORREF GetTextColot(int iFontId); - void SetTextColor(int iFontId, COLORREF clText); - - struct TEventInfo - { - CCtrlClc *ctrl; - NMCLISTCONTROL *info; - }; - - CCallback OnExpanded; - CCallback OnListRebuilt; - CCallback OnItemChecked; - CCallback OnDragging; - CCallback OnDropped; - CCallback OnListSizeChange; - CCallback OnOptionsChanged; - CCallback OnDragStop; - CCallback OnNewContact; - CCallback OnContactMoved; - CCallback OnCheckChanged; - CCallback OnClick; - -protected: - BOOL OnNotify(int idCtrl, NMHDR *pnmh); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlData - data access controls base class - -class CCtrlData : public CCtrlBase -{ -public: - CCtrlData( CDlgBase* dlg, int ctrlId ); - - virtual ~CCtrlData() - { - if (m_dbLink) delete m_dbLink; - } - - __inline bool IsChanged() const { return m_changed; } - - void CreateDbLink( const char* szModuleName, const char* szSetting, BYTE type, DWORD iValue ); - void CreateDbLink( const char* szModuleName, const char* szSetting, TCHAR* szValue ); - - virtual void OnInit(); - - // Events - CCallback OnChange; - -protected: - CDbLink *m_dbLink; - bool m_changed; - - void NotifyChange(); - - __inline BYTE GetDataType() { return m_dbLink ? m_dbLink->GetDataType() : DBVT_DELETED; } - __inline DWORD LoadInt() { return m_dbLink ? m_dbLink->LoadInt() : 0; } - __inline void SaveInt(DWORD value) { if (m_dbLink) m_dbLink->SaveInt(value); } - __inline const TCHAR *LoadText() { return m_dbLink ? m_dbLink->LoadText() : _T(""); } - __inline void SaveText(TCHAR *value) { if (m_dbLink) m_dbLink->SaveText(value); } -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlCheck - -class CCtrlCheck : public CCtrlData -{ -public: - CCtrlCheck( CDlgBase* dlg, int ctrlId ); - virtual BOOL OnCommand(HWND, WORD, WORD) { NotifyChange(); return TRUE; } - virtual void OnInit() - { - CCtrlData::OnInit(); - OnReset(); - } - virtual void OnApply() - { - SaveInt(GetState()); - } - virtual void OnReset() - { - SetState(LoadInt()); - } - - int GetState(); - void SetState(int state); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlEdit - -class CCtrlEdit : public CCtrlData -{ -public: - CCtrlEdit( CDlgBase* dlg, int ctrlId ); - virtual BOOL OnCommand(HWND, WORD, WORD idCode) - { - if (idCode == EN_CHANGE) - NotifyChange(); - return TRUE; - } - virtual void OnInit() - { - CCtrlData::OnInit(); - OnReset(); - } - virtual void OnApply() - { - if (GetDataType() == DBVT_TCHAR) - { - int len = GetWindowTextLength(m_hwnd) + 1; - TCHAR *buf = (TCHAR *)_alloca(sizeof(TCHAR) * len); - GetWindowText(m_hwnd, buf, len); - SaveText(buf); - } - else if (GetDataType() != DBVT_DELETED) - { - SaveInt(GetInt()); - } - } - virtual void OnReset() - { - if (GetDataType() == DBVT_TCHAR) - SetText(LoadText()); - else if (GetDataType() != DBVT_DELETED) - SetInt(LoadInt()); - } -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlListBox - -class CCtrlListBox : public CCtrlBase -{ -public: - CCtrlListBox( CDlgBase* dlg, int ctrlId ); - - int AddString(TCHAR *text, LPARAM data=0); - void DeleteString(int index); - int FindString(TCHAR *str, int index = -1, bool exact = false); - int GetCount(); - int GetCurSel(); - LPARAM GetItemData(int index); - TCHAR* GetItemText(int index); - TCHAR* GetItemText(int index, TCHAR *buf, int size); - bool GetSel(int index); - int GetSelCount(); - int* GetSelItems(int *items, int count); - int* GetSelItems(); - int InsertString(TCHAR *text, int pos, LPARAM data=0); - void ResetContent(); - int SelectString(TCHAR *str); - int SetCurSel(int index); - void SetItemData(int index, LPARAM data); - void SetSel(int index, bool sel=true); - - // Events - CCallback OnDblClick; - CCallback OnSelCancel; - CCallback OnSelChange; - -protected: - BOOL OnCommand(HWND hwndCtrl, WORD idCtrl, WORD idCode); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlCombo - -class CCtrlCombo : public CCtrlData -{ -public: - CCtrlCombo( CDlgBase* dlg, int ctrlId ); - - virtual BOOL OnCommand(HWND, WORD, WORD idCode) - { - switch (idCode) - { - case CBN_CLOSEUP: OnCloseup(this); break; - case CBN_DROPDOWN: OnDropdown(this); break; - - case CBN_EDITCHANGE: - case CBN_EDITUPDATE: - case CBN_SELCHANGE: - case CBN_SELENDOK: - NotifyChange(); - break; - } - return TRUE; - } - - virtual void OnInit() - { - CCtrlData::OnInit(); - OnReset(); - } - virtual void OnApply() - { - if (GetDataType() == DBVT_TCHAR) - { - int len = GetWindowTextLength(m_hwnd) + 1; - TCHAR *buf = (TCHAR *)_alloca(sizeof(TCHAR) * len); - GetWindowText(m_hwnd, buf, len); - SaveText(buf); - } - else if (GetDataType() != DBVT_DELETED) - { - SaveInt(GetInt()); - } - } - virtual void OnReset() - { - if (GetDataType() == DBVT_TCHAR) - SetText(LoadText()); - else if (GetDataType() != DBVT_DELETED) - SetInt(LoadInt()); - } - - // Control interface - int AddString(const TCHAR *text, LPARAM data = 0 ); - int AddStringA(const char *text, LPARAM data = 0 ); - void DeleteString(int index); - int FindString(const TCHAR *str, int index = -1, bool exact = false); - int FindStringA(const char *str, int index = -1, bool exact = false); - int GetCount(); - int GetCurSel(); - bool GetDroppedState(); - LPARAM GetItemData(int index); - TCHAR* GetItemText(int index); - TCHAR* GetItemText(int index, TCHAR *buf, int size); - int InsertString(TCHAR *text, int pos, LPARAM data=0); - void ResetContent(); - int SelectString(TCHAR *str); - int SetCurSel(int index); - void SetItemData(int index, LPARAM data); - void ShowDropdown(bool show = true); - - // Events - CCallback OnCloseup; - CCallback OnDropdown; -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlListView - -class CCtrlListView : public CCtrlBase -{ -public: - CCtrlListView( CDlgBase* dlg, int ctrlId ); - - // Classic LV interface - DWORD ApproximateViewRect(int cx, int cy, int iCount); - void Arrange(UINT code); - void CancelEditLabel(); - HIMAGELIST CreateDragImage(int iItem, LPPOINT lpptUpLeft); - void DeleteAllItems(); - void DeleteColumn(int iCol); - void DeleteItem(int iItem); - HWND EditLabel(int iItem); - int EnableGroupView(BOOL fEnable); - BOOL EnsureVisible(int i, BOOL fPartialOK); - int FindItem(int iStart, const LVFINDINFO *plvfi); - COLORREF GetBkColor(); - void GetBkImage(LPLVBKIMAGE plvbki); - UINT GetCallbackMask(); - BOOL GetCheckState(UINT iIndex); - void GetColumn(int iCol, LPLVCOLUMN pcol); - void GetColumnOrderArray(int iCount, int *lpiArray); - int GetColumnWidth(int iCol); - int GetCountPerPage(); - HWND GetEditControl(); - //void GetEmptyText(PWSTR pszText, UINT cchText); - DWORD GetExtendedListViewStyle(); - INT GetFocusedGroup(); - //void GetFooterInfo(LVFOOTERINFO *plvfi); - //void GetFooterItem(UINT iItem, LVFOOTERITEM *pfi); - //void GetFooterItemRect(UINT iItem, RECT *prc); - //void GetFooterRect(RECT *prc); - int GetGroupCount(); - //HIMAGELIST GetGroupHeaderImageList(); - void GetGroupInfo(int iGroupId, PLVGROUP pgrp); - void GetGroupInfoByIndex(int iIndex, PLVGROUP pgrp); - void GetGroupMetrics(LVGROUPMETRICS *pGroupMetrics); - //BOOL GetGroupRect(int iGroupId, RECT *prc); - UINT GetGroupState(UINT dwGroupId, UINT dwMask); - HWND GetHeader(); - HCURSOR GetHotCursor(); - INT GetHotItem(); - DWORD GetHoverTime(); - HIMAGELIST GetImageList(int iImageList); - BOOL GetInsertMark(LVINSERTMARK *plvim); - COLORREF GetInsertMarkColor(); - int GetInsertMarkRect(LPRECT prc); - BOOL GetISearchString(LPSTR lpsz); - void GetItem(LPLVITEM pitem); - int GetItemCount(); - //void GetItemIndexRect(LVITEMINDEX *plvii, LONG iSubItem, LONG code, LPRECT prc); - void GetItemPosition(int i, POINT *ppt); - void GetItemRect(int i, RECT *prc, int code); - DWORD GetItemSpacing(BOOL fSmall); - UINT GetItemState(int i, UINT mask); - void GetItemText(int iItem, int iSubItem, LPTSTR pszText, int cchTextMax); - int GetNextItem(int iStart, UINT flags); - //BOOL GetNextItemIndex(LVITEMINDEX *plvii, LPARAM flags); - BOOL GetNumberOfWorkAreas(LPUINT lpuWorkAreas); - BOOL GetOrigin(LPPOINT lpptOrg); - COLORREF GetOutlineColor(); - UINT GetSelectedColumn(); - UINT GetSelectedCount(); - INT GetSelectionMark(); - int GetStringWidth(LPCSTR psz); - BOOL GetSubItemRect(int iItem, int iSubItem, int code, LPRECT lpRect); - COLORREF GetTextBkColor(); - COLORREF GetTextColor(); - void GetTileInfo(PLVTILEINFO plvtinfo); - void GetTileViewInfo(PLVTILEVIEWINFO plvtvinfo); - HWND GetToolTips(); - int GetTopIndex(); - BOOL GetUnicodeFormat(); - DWORD GetView(); - BOOL GetViewRect(RECT *prc); - void GetWorkAreas(INT nWorkAreas, LPRECT lprc); - BOOL HasGroup(int dwGroupId); - int HitTest(LPLVHITTESTINFO pinfo); - int HitTestEx(LPLVHITTESTINFO pinfo); - int InsertColumn(int iCol, const LPLVCOLUMN pcol); - int InsertGroup(int index, PLVGROUP pgrp); - void InsertGroupSorted(PLVINSERTGROUPSORTED structInsert); - int InsertItem(const LPLVITEM pitem); - BOOL InsertMarkHitTest(LPPOINT point, LVINSERTMARK *plvim); - BOOL IsGroupViewEnabled(); - UINT IsItemVisible(UINT index); - UINT MapIDToIndex(UINT id); - UINT MapIndexToID(UINT index); - BOOL RedrawItems(int iFirst, int iLast); - void RemoveAllGroups(); - int RemoveGroup(int iGroupId); - BOOL Scroll(int dx, int dy); - BOOL SetBkColor(COLORREF clrBk); - BOOL SetBkImage(LPLVBKIMAGE plvbki); - BOOL SetCallbackMask(UINT mask); - void SetCheckState(UINT iIndex, BOOL fCheck); - BOOL SetColumn(int iCol, LPLVCOLUMN pcol); - BOOL SetColumnOrderArray(int iCount, int *lpiArray); - BOOL SetColumnWidth(int iCol, int cx); - void SetExtendedListViewStyle(DWORD dwExStyle); - void SetExtendedListViewStyleEx(DWORD dwExMask, DWORD dwExStyle); - //HIMAGELIST SetGroupHeaderImageList(HIMAGELIST himl); - int SetGroupInfo(int iGroupId, PLVGROUP pgrp); - void SetGroupMetrics(PLVGROUPMETRICS pGroupMetrics); - void SetGroupState(UINT dwGroupId, UINT dwMask, UINT dwState); - HCURSOR SetHotCursor(HCURSOR hCursor); - INT SetHotItem(INT iIndex); - void SetHoverTime(DWORD dwHoverTime); - DWORD SetIconSpacing(int cx, int cy); - HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList); - BOOL SetInfoTip(PLVSETINFOTIP plvSetInfoTip); - BOOL SetInsertMark(LVINSERTMARK *plvim); - COLORREF SetInsertMarkColor(COLORREF color); - BOOL SetItem(const LPLVITEM pitem); - void SetItemCount(int cItems); - void SetItemCountEx(int cItems, DWORD dwFlags); - //HRESULT SetItemIndexState(LVITEMINDEX *plvii, UINT data, UINT mask); - BOOL SetItemPosition(int i, int x, int y); - void SetItemPosition32(int iItem, int x, int y); - void SetItemState(int i, UINT state, UINT mask); - void SetItemText(int i, int iSubItem, TCHAR *pszText); - COLORREF SetOutlineColor(COLORREF color); - void SetSelectedColumn(int iCol); - INT SetSelectionMark(INT iIndex); - BOOL SetTextBkColor(COLORREF clrText); - BOOL SetTextColor(COLORREF clrText); - BOOL SetTileInfo(PLVTILEINFO plvtinfo); - BOOL SetTileViewInfo(PLVTILEVIEWINFO plvtvinfo); - HWND SetToolTips(HWND ToolTip); - BOOL SetUnicodeFormat(BOOL fUnicode); - int SetView(DWORD iView); - void SetWorkAreas(INT nWorkAreas, LPRECT lprc); - int SortGroups(PFNLVGROUPCOMPARE pfnGroupCompare, LPVOID plv); - BOOL SortItems(PFNLVCOMPARE pfnCompare, LPARAM lParamSort); - BOOL SortItemsEx(PFNLVCOMPARE pfnCompare, LPARAM lParamSort); - INT SubItemHitTest(LPLVHITTESTINFO pInfo); - INT SubItemHitTestEx(LPLVHITTESTINFO plvhti); - BOOL Update(int iItem); - - // Events - struct TEventInfo { - CCtrlListView *treeviewctrl; - union { - NMHDR *nmhdr; - NMLISTVIEW *nmlv; - NMLVDISPINFO *nmlvdi; - NMLVSCROLL *nmlvscr; - NMLVGETINFOTIP *nmlvit; - NMLVFINDITEM *nmlvfi; - NMITEMACTIVATE *nmlvia; - NMLVKEYDOWN *nmlvkey; - }; - }; - - CCallback OnBeginDrag; - CCallback OnBeginLabelEdit; - CCallback OnBeginRDrag; - CCallback OnBeginScroll; - CCallback OnColumnClick; - //CCallback OnColumnDropdown; - //CCallback OnColumnOverflowClick; - CCallback OnDeleteAllItems; - CCallback OnDeleteItem; - CCallback OnDoubleClick; - CCallback OnEndLabelEdit; - CCallback OnEndScroll; - CCallback OnGetDispInfo; - //CCallback OnGetEmptyMarkup; - CCallback OnGetInfoTip; - CCallback OnHotTrack; - CCallback OnIncrementalSearch; - CCallback OnInsertItem; - CCallback OnItemActivate; - CCallback OnItemChanged; - CCallback OnItemChanging; - CCallback OnKeyDown; - //CCallback OnLinkClick; - CCallback OnMarqueeBegin; - CCallback OnSetDispInfo; - -protected: - BOOL OnNotify(int idCtrl, NMHDR *pnmh); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlTreeView - -class CCtrlTreeView : public CCtrlBase -{ -public: - CCtrlTreeView( CDlgBase* dlg, int ctrlId ); - - // Classic TV interface - HIMAGELIST CreateDragImage(HTREEITEM hItem); - void DeleteAllItems(); - void DeleteItem(HTREEITEM hItem); - HWND EditLabel(HTREEITEM hItem); - void EndEditLabelNow(BOOL cancel); - void EnsureVisible(HTREEITEM hItem); - void Expand(HTREEITEM hItem, DWORD flag); - COLORREF GetBkColor(); - DWORD GetCheckState(HTREEITEM hItem); - HTREEITEM GetChild(HTREEITEM hItem); - int GetCount(); - HTREEITEM GetDropHilight(); - HWND GetEditControl(); - HTREEITEM GetFirstVisible(); - HIMAGELIST GetImageList(int iImage); - int GetIndent(); - COLORREF GetInsertMarkColor(); - void GetItem(TVITEMEX *tvi); - int GetItemHeight(); - void GetItemRect(HTREEITEM hItem, RECT *rcItem, BOOL fItemRect); - DWORD GetItemState(HTREEITEM hItem, DWORD stateMask); - HTREEITEM GetLastVisible(); - COLORREF GetLineColor(); - HTREEITEM GetNextItem(HTREEITEM hItem, DWORD flag); - HTREEITEM GetNextSibling(HTREEITEM hItem); - HTREEITEM GetNextVisible(HTREEITEM hItem); - HTREEITEM GetParent(HTREEITEM hItem); - HTREEITEM GetPrevSibling(HTREEITEM hItem); - HTREEITEM GetPrevVisible(HTREEITEM hItem); - HTREEITEM GetRoot(); - DWORD GetScrollTime(); - HTREEITEM GetSelection(); - COLORREF GetTextColor(); - HWND GetToolTips(); - BOOL GetUnicodeFormat(); - unsigned GetVisibleCount(); - HTREEITEM HitTest(TVHITTESTINFO *hti); - HTREEITEM InsertItem(TVINSERTSTRUCT *tvis); - //HTREEITEM MapAccIDToHTREEITEM(UINT id); - //UINT MapHTREEITEMtoAccID(HTREEITEM hItem); - void Select(HTREEITEM hItem, DWORD flag); - void SelectDropTarget(HTREEITEM hItem); - void SelectItem(HTREEITEM hItem); - void SelectSetFirstVisible(HTREEITEM hItem); - COLORREF SetBkColor(COLORREF clBack); - void SetCheckState(HTREEITEM hItem, DWORD state); - void SetImageList(HIMAGELIST hIml, int iImage); - void SetIndent(int iIndent); - void SetInsertMark(HTREEITEM hItem, BOOL fAfter); - COLORREF SetInsertMarkColor(COLORREF clMark); - void SetItem(TVITEMEX *tvi); - void SetItemHeight(short cyItem); - void SetItemState(HTREEITEM hItem, DWORD state, DWORD stateMask); - COLORREF SetLineColor(COLORREF clLine); - void SetScrollTime(UINT uMaxScrollTime); - COLORREF SetTextColor(COLORREF clText); - HWND SetToolTips(HWND hwndToolTips); - BOOL SetUnicodeFormat(BOOL fUnicode); - void SortChildren(HTREEITEM hItem, BOOL fRecurse); - void SortChildrenCB(TVSORTCB *cb, BOOL fRecurse); - - // Additional stuff - void TranslateItem(HTREEITEM hItem); - void TranslateTree(); - HTREEITEM FindNamedItem(HTREEITEM hItem, const TCHAR *name); - void GetItem(HTREEITEM hItem, TVITEMEX *tvi); - void GetItem(HTREEITEM hItem, TVITEMEX *tvi, TCHAR *szText, int iTextLength); - - // Events - struct TEventInfo { - CCtrlTreeView *treeviewctrl; - union { - NMHDR *nmhdr; - NMTREEVIEW *nmtv; - NMTVDISPINFO *nmtvdi; - NMTVGETINFOTIP *nmtvit; - NMTVKEYDOWN *nmtvkey; - }; - }; - - CCallback OnBeginDrag; - CCallback OnBeginLabelEdit; - CCallback OnBeginRDrag; - CCallback OnDeleteItem; - CCallback OnEndLabelEdit; - CCallback OnGetDispInfo; - CCallback OnGetInfoTip; - CCallback OnItemExpanded; - CCallback OnItemExpanding; - CCallback OnKeyDown; - CCallback OnSelChanged; - CCallback OnSelChanging; - CCallback OnSetDispInfo; - CCallback OnSingleExpand; - -protected: - BOOL OnNotify(int idCtrl, NMHDR *pnmh); -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CCtrlCustom - -template -class CCtrlCustom : public CCtrlBase -{ -private: - void (TDlg::*m_pfnOnCommand)(HWND hwndCtrl, WORD idCtrl, WORD idCode); - void (TDlg::*m_pfnOnNotify)(int idCtrl, NMHDR *pnmh); - void (TDlg::*m_pfnOnMeasureItem)(MEASUREITEMSTRUCT *param); - void (TDlg::*m_pfnOnDrawItem)(DRAWITEMSTRUCT *param); - void (TDlg::*m_pfnOnDeleteItem)(DELETEITEMSTRUCT *param); - -public: - CCtrlCustom(TDlg *wnd, int idCtrl, - void (TDlg::*pfnOnCommand)(HWND hwndCtrl, WORD idCtrl, WORD idCode), - void (TDlg::*pfnOnNotify)(int idCtrl, NMHDR *pnmh), - void (TDlg::*pfnOnMeasureItem)(MEASUREITEMSTRUCT *param) = NULL, - void (TDlg::*pfnOnDrawItem)(DRAWITEMSTRUCT *param) = NULL, - void (TDlg::*pfnOnDeleteItem)(DELETEITEMSTRUCT *param) = NULL): CCtrlBase(wnd, idCtrl) - { - m_pfnOnCommand = pfnOnCommand; - m_pfnOnNotify = pfnOnNotify; - m_pfnOnMeasureItem = pfnOnMeasureItem; - m_pfnOnDrawItem = pfnOnDrawItem; - m_pfnOnDeleteItem = pfnOnDeleteItem; - } - - virtual BOOL OnCommand(HWND hwndCtrl, WORD idCtrl, WORD idCode) - { - if (m_parentWnd && m_pfnOnCommand) { - m_parentWnd->m_lresult = 0; - (((TDlg *)m_parentWnd)->*m_pfnOnCommand)(hwndCtrl, idCtrl, idCode); - return m_parentWnd->m_lresult; - } - return FALSE; - } - virtual BOOL OnNotify(int idCtrl, NMHDR *pnmh) - { - if (m_parentWnd && m_pfnOnNotify) { - m_parentWnd->m_lresult = 0; - (((TDlg *)m_parentWnd)->*m_pfnOnNotify)(idCtrl, pnmh); - return m_parentWnd->m_lresult; - } - return FALSE; - } - - virtual BOOL OnMeasureItem(MEASUREITEMSTRUCT *param) - { - if (m_parentWnd && m_pfnOnMeasureItem) { - m_parentWnd->m_lresult = 0; - (((TDlg *)m_parentWnd)->*m_pfnOnMeasureItem)(param); - return m_parentWnd->m_lresult; - } - return FALSE; - } - virtual BOOL OnDrawItem(DRAWITEMSTRUCT *param) - { - if (m_parentWnd && m_pfnOnDrawItem) { - m_parentWnd->m_lresult = 0; - (((TDlg *)m_parentWnd)->*m_pfnOnDrawItem)(param); - return m_parentWnd->m_lresult; - } - return FALSE; - } - virtual BOOL OnDeleteItem(DELETEITEMSTRUCT *param) - { - if (m_parentWnd && m_pfnOnDeleteItem) { - m_parentWnd->m_lresult = 0; - (((TDlg *)m_parentWnd)->*m_pfnOnDeleteItem)(param); - return m_parentWnd->m_lresult; - } - return FALSE; - } -}; - -///////////////////////////////////////////////////////////////////////////////////////// -// CProtoDlgBase - -template -class CProtoDlgBase : public CDlgBase -{ -public: - __inline CProtoDlgBase(TProto *proto, int idDialog, HWND parent ) : - CDlgBase( idDialog, parent ), - m_proto( proto ) - { - } - - __inline void CreateLink( CCtrlData& ctrl, char *szSetting, BYTE type, DWORD iValue) - { - ctrl.CreateDbLink((( PROTO_INTERFACE* )m_proto)->m_szModuleName, szSetting, type, iValue ); - } - __inline void CreateLink( CCtrlData& ctrl, const char *szSetting, TCHAR *szValue) - { - ctrl.CreateDbLink((( PROTO_INTERFACE* )m_proto)->m_szModuleName, szSetting, szValue ); - } - - __inline TProto *GetProto() { return m_proto; } - -protected: - TProto* m_proto; -}; - -///////////////////////////////////////////////////////////////////////////////////////// - -int UIEmulateBtnClick(HWND hwndDlg, UINT idcButton); -void UIShowControls(HWND hwndDlg, int *idList, int nCmdShow); - -#endif // __jabber_ui_utils_h__ -- cgit v1.2.3