From a647991cd7e110ac71a52a3283f3ba1f48a58b8b Mon Sep 17 00:00:00 2001 From: ozone10 Date: Sun, 11 Jun 2023 12:26:00 +0200 Subject: [PATCH] Fix some GCC and MSC warnings - optimize dark mode - add initializers Fix #13867, close #13868 --- PowerEditor/gcc/makefile | 4 +- PowerEditor/src/MISC/RegExt/regExtDlg.cpp | 23 ++---- PowerEditor/src/MISC/RegExt/regExtDlg.h | 8 +- PowerEditor/src/MISC/sha1/sha1.cpp | 12 ++- PowerEditor/src/MISC/sha512/sha512.cpp | 4 +- PowerEditor/src/Notepad_plus.cpp | 9 +-- PowerEditor/src/NppBigSwitch.cpp | 40 +++++----- PowerEditor/src/NppIO.cpp | 22 +++--- .../WinControls/AnsiCharPanel/ansiCharPanel.h | 20 ++--- .../src/WinControls/DockingWnd/Gripper.h | 10 +-- .../WinControls/Preference/preferenceDlg.cpp | 8 +- .../src/WinControls/TreeView/TreeView.cpp | 74 ++++++++++--------- 12 files changed, 114 insertions(+), 120 deletions(-) diff --git a/PowerEditor/gcc/makefile b/PowerEditor/gcc/makefile index 59fd9414e..1e3f2a34c 100644 --- a/PowerEditor/gcc/makefile +++ b/PowerEditor/gcc/makefile @@ -53,13 +53,13 @@ SUBMAKEFLAGS := -O --no-print-directory ifeq "$(filter-out 0,$(DEBUG))" "" BUILD_TYPE := release BUILD_SUFFIX := -CXXFLAGS += -O3 -Wconversion +CXXFLAGS += -O3 -Wno-alloc-size-larger-than -Wconversion CPP_DEFINE += NDEBUG LDFLAGS += -s else BUILD_TYPE := debug BUILD_SUFFIX := -debug -CXXFLAGS += -Og -g -Wpedantic -Wall -Wextra -Wno-cast-function-type -Wconversion +CXXFLAGS += -Og -g -Wpedantic -Wall -Wextra -Wno-cast-function-type -Wno-overloaded-virtual -Wconversion CPP_DEFINE += DEBUG endif diff --git a/PowerEditor/src/MISC/RegExt/regExtDlg.cpp b/PowerEditor/src/MISC/RegExt/regExtDlg.cpp index 6dcd2dda6..3bbf37bc7 100644 --- a/PowerEditor/src/MISC/RegExt/regExtDlg.cpp +++ b/PowerEditor/src/MISC/RegExt/regExtDlg.cpp @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "Common.h" + #include "regExtDlg.h" #include "resource.h" #include "Parameters.h" @@ -109,20 +109,12 @@ intptr_t CALLBACK RegExtDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPa case WM_CTLCOLORLISTBOX: { - if (NppDarkMode::isEnabled()) - { - return NppDarkMode::onCtlColorListbox(wParam, lParam); - } - break; + return NppDarkMode::onCtlColorListbox(wParam, lParam); } case WM_CTLCOLORDLG: { - if (NppDarkMode::isEnabled()) - { - return NppDarkMode::onCtlColorDarker(reinterpret_cast(wParam)); - } - break; + return NppDarkMode::onCtlColorDarker(reinterpret_cast(wParam)); } case WM_CTLCOLORSTATIC: @@ -136,12 +128,7 @@ intptr_t CALLBACK RegExtDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPa { return NppDarkMode::onCtlColorDarkerBGStaticText(hdcStatic, nppParam.isAdmin()); } - - if (NppDarkMode::isEnabled()) - { - return NppDarkMode::onCtlColorDarker(hdcStatic); - } - return FALSE; + return NppDarkMode::onCtlColorDarker(hdcStatic); } case WM_PRINTCLIENT: @@ -340,7 +327,7 @@ void RegExtDlg::getRegisteredExts() int nbRegisteredKey = getNbSubKey(HKEY_CLASSES_ROOT); for (int i = 0 ; i < nbRegisteredKey ; ++i) { - TCHAR extName[extNameLen]; + TCHAR extName[extNameLen]{}; //FILETIME fileTime; int extNameActualLen = extNameLen; int res = ::RegEnumKeyEx(HKEY_CLASSES_ROOT, i, extName, reinterpret_cast(&extNameActualLen), nullptr, nullptr, nullptr, nullptr); diff --git a/PowerEditor/src/MISC/RegExt/regExtDlg.h b/PowerEditor/src/MISC/RegExt/regExtDlg.h index 4ca67031b..8f5c65a45 100644 --- a/PowerEditor/src/MISC/RegExt/regExtDlg.h +++ b/PowerEditor/src/MISC/RegExt/regExtDlg.h @@ -20,7 +20,7 @@ #include "regExtDlgRc.h" #include "StaticDialog.h" -const int extNameLen = 32; +constexpr int extNameLen = 32; class RegExtDlg : public StaticDialog { @@ -33,7 +33,7 @@ public : private : bool _isCustomize = false; - intptr_t CALLBACK run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam); + intptr_t CALLBACK run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam) override; void getRegisteredExts(); void getDefSupportedExts(); @@ -42,13 +42,13 @@ private : void writeNppPath(); int getNbSubKey(HKEY hKey) const { - int nbSubKey; + int nbSubKey = 0; long result = ::RegQueryInfoKey(hKey, NULL, NULL, NULL, (LPDWORD)&nbSubKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL); return (result == ERROR_SUCCESS)?nbSubKey:0; } int getNbSubValue(HKEY hKey) const { - int nbSubValue; + int nbSubValue = 0; long result = ::RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, (LPDWORD)&nbSubValue, NULL, NULL, NULL, NULL); return (result == ERROR_SUCCESS)?nbSubValue:0; } diff --git a/PowerEditor/src/MISC/sha1/sha1.cpp b/PowerEditor/src/MISC/sha1/sha1.cpp index 742a2f75e..669399c67 100644 --- a/PowerEditor/src/MISC/sha1/sha1.cpp +++ b/PowerEditor/src/MISC/sha1/sha1.cpp @@ -39,9 +39,11 @@ #define S_R3(v,w,x,y,z,i) {z+=(((w|x)&y)|(w&x))+SHABLK(i)+0x8F1BBCDC+ROL32(v,5);w=ROL32(w,30);} #define S_R4(v,w,x,y,z,i) {z+=(w^x^y)+SHABLK(i)+0xCA62C1D6+ROL32(v,5);w=ROL32(w,30);} +#if defined(_MSC_VER) #pragma warning(push) // Disable compiler warning 'Conditional expression is constant' #pragma warning(disable: 4127) +#endif CSHA1::CSHA1() { @@ -172,9 +174,9 @@ bool CSHA1::HashFile(const TCHAR* tszFileName) void CSHA1::Final() { - UINT_32 i; + UINT_32 i = 0; - UINT_8 pbFinalCount[8]; + UINT_8 pbFinalCount[8]{}; for(i = 0; i < 8; ++i) pbFinalCount[i] = static_cast((m_count[((i >= 4) ? 0 : 1)] >> ((3 - (i & 3)) * 8) ) & 0xFF); // Endian independent @@ -205,7 +207,7 @@ bool CSHA1::ReportHash(TCHAR* tszReport, REPORT_TYPE rtReportType) const { if(tszReport == NULL) return false; - TCHAR tszTemp[16]; + TCHAR tszTemp[16]{}; if((rtReportType == REPORT_HEX) || (rtReportType == REPORT_HEX_SHORT)) { @@ -239,7 +241,7 @@ bool CSHA1::ReportHash(TCHAR* tszReport, REPORT_TYPE rtReportType) const #ifdef SHA1_STL_FUNCTIONS bool CSHA1::ReportHashStl(std::basic_string& strOut, REPORT_TYPE rtReportType) const { - TCHAR tszOut[84]; + TCHAR tszOut[84]{}; const bool bResult = ReportHash(tszOut, rtReportType); if(bResult) strOut = tszOut; return bResult; @@ -253,4 +255,6 @@ bool CSHA1::GetHash(UINT_8* pbDest20) const return true; } +#if defined(_MSC_VER) #pragma warning(pop) +#endif diff --git a/PowerEditor/src/MISC/sha512/sha512.cpp b/PowerEditor/src/MISC/sha512/sha512.cpp index e3f2c225d..f3fdc3047 100644 --- a/PowerEditor/src/MISC/sha512/sha512.cpp +++ b/PowerEditor/src/MISC/sha512/sha512.cpp @@ -18,7 +18,9 @@ #include #include "sha512.h" -#pragma comment(lib, "crypt32.lib") +//#if defined(_MSC_VER) +//#pragma comment(lib, "crypt32.lib") +//#endif void calc_sha_512(unsigned char hash[64], const void *input, size_t len) { HCRYPTPROV hProv = 0; diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index d33bc9f37..0c338bdf8 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -508,11 +508,10 @@ LRESULT Notepad_plus::init(HWND hwnd) // Find the first separator which is between IDM_LANG_TEXT and languages int x = 0; - MENUITEMINFO menuItemInfo - { - .cbSize = sizeof(MENUITEMINFO), - .fMask = MIIM_FTYPE - }; + MENUITEMINFO menuItemInfo{}; + menuItemInfo.cbSize = sizeof(MENUITEMINFO); + menuItemInfo.fMask = MIIM_FTYPE; + for (; x < nbItem; ++x) { ::GetMenuItemInfo(subMenu, x, TRUE, &menuItemInfo); diff --git a/PowerEditor/src/NppBigSwitch.cpp b/PowerEditor/src/NppBigSwitch.cpp index 86ad6fdbc..28522ab2a 100644 --- a/PowerEditor/src/NppBigSwitch.cpp +++ b/PowerEditor/src/NppBigSwitch.cpp @@ -33,7 +33,9 @@ using namespace std; +#ifndef WM_DPICHANGED #define WM_DPICHANGED 0x02E0 +#endif struct SortTaskListPred final @@ -374,8 +376,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_LAUNCHFINDINFILESDLG: { // Find in files function code should be here due to the number of parameters (2) cannot be passed via WM_COMMAND - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR str[strSize]; + constexpr int strSize = FINDREPLACE_MAXLENGTH; + TCHAR str[strSize]{}; bool isFirstTime = !_findReplaceDlg.isCreated(); _findReplaceDlg.doDialog(FIND_DLG, _nativeLangSpeaker.isRTL()); @@ -397,8 +399,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_INTERNAL_FINDINPROJECTS: { - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR str[strSize]; + constexpr int strSize = FINDREPLACE_MAXLENGTH; + TCHAR str[strSize]{}; bool isFirstTime = not _findReplaceDlg.isCreated(); _findReplaceDlg.doDialog(FIND_DLG, _nativeLangSpeaker.isRTL()); @@ -414,8 +416,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_INTERNAL_FINDINFINDERDLG: { - const int strSize = FINDREPLACE_MAXLENGTH; - TCHAR str[strSize]; + constexpr int strSize = FINDREPLACE_MAXLENGTH; + TCHAR str[strSize]{}; Finder *launcher = reinterpret_cast(wParam); bool isFirstTime = !_findInFinderDlg.isCreated(); @@ -558,7 +560,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_RELOADFILE: { - TCHAR longNameFullpath[MAX_PATH]; + TCHAR longNameFullpath[MAX_PATH]{}; const TCHAR* pFilePath = reinterpret_cast(lParam); wcscpy_s(longNameFullpath, MAX_PATH, pFilePath); if (wcschr(longNameFullpath, '~')) @@ -949,12 +951,12 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_GETFILENAMEATCURSOR: // wParam = buffer length, lParam = (TCHAR*)buffer { - const int strSize = CURRENTWORD_MAXLENGTH; - TCHAR str[strSize]; - TCHAR strLine[strSize]; - size_t lineNumber; - intptr_t col; - int hasSlash; + constexpr int strSize = CURRENTWORD_MAXLENGTH; + TCHAR str[strSize]{}; + TCHAR strLine[strSize]{}; + size_t lineNumber = 0; + intptr_t col = 0; + int hasSlash = 0; TCHAR *pTchar = reinterpret_cast(lParam); _pEditView->getGenericSelectedText(str, strSize); // this is either the selected text, or the word under the cursor if there is no selection @@ -966,8 +968,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa if (hasSlash == FALSE) { // it's not a full file name so try to find the beginning and ending of it - intptr_t start; - intptr_t end; + intptr_t start = 0; + intptr_t end = 0; const TCHAR *delimiters; lineNumber = _pEditView->getCurrentLineNumber(); @@ -1004,8 +1006,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_GETNPPFULLFILEPATH: case NPPM_GETNPPDIRECTORY: { - const int strSize = MAX_PATH; - TCHAR str[strSize]; + constexpr int strSize = MAX_PATH; + TCHAR str[strSize]{}; ::GetModuleFileName(NULL, str, strSize); @@ -1222,7 +1224,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_DECODESCI: { // convert to ASCII - ScintillaEditView *pSci; + ScintillaEditView *pSci = nullptr; if (wParam == MAIN_VIEW) pSci = &_mainEditView; else if (wParam == SUB_VIEW) @@ -1260,7 +1262,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa case NPPM_ENCODESCI: { // convert - ScintillaEditView *pSci; + ScintillaEditView *pSci = nullptr; if (wParam == MAIN_VIEW) pSci = &_mainEditView; else if (wParam == SUB_VIEW) diff --git a/PowerEditor/src/NppIO.cpp b/PowerEditor/src/NppIO.cpp index 11691e810..32098a08d 100644 --- a/PowerEditor/src/NppIO.cpp +++ b/PowerEditor/src/NppIO.cpp @@ -41,7 +41,7 @@ DWORD WINAPI Notepad_plus::monitorFileOnChange(void * params) const TCHAR *fullFileName = (const TCHAR *)buf->getFullPathName(); //The folder to watch : - WCHAR folderToMonitor[MAX_PATH]; + WCHAR folderToMonitor[MAX_PATH]{}; wcscpy_s(folderToMonitor, fullFileName); ::PathRemoveFileSpecW(folderToMonitor); @@ -74,7 +74,7 @@ DWORD WINAPI Notepad_plus::monitorFileOnChange(void * params) case WAIT_OBJECT_0 + 1: // We've received a notification in the queue. { - DWORD dwAction; + DWORD dwAction = 0; generic_string fn; // Process all available changes, ignore User actions while (dirChanges.Pop(dwAction, fn)) @@ -125,9 +125,9 @@ bool resolveLinkFile(generic_string& linkFilePath) { bool isResolved = false; - IShellLink* psl; - WCHAR targetFilePath[MAX_PATH]; - WIN32_FIND_DATA wfd = {}; + IShellLink* psl = nullptr; + WCHAR targetFilePath[MAX_PATH]{}; + WIN32_FIND_DATA wfd{}; HRESULT hres = CoInitialize(NULL); if (SUCCEEDED(hres)) @@ -135,7 +135,7 @@ bool resolveLinkFile(generic_string& linkFilePath) hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); if (SUCCEEDED(hres)) { - IPersistFile* ppf; + IPersistFile* ppf = nullptr; hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf); if (SUCCEEDED(hres)) { @@ -661,7 +661,7 @@ bool Notepad_plus::doSave(BufferID id, const TCHAR * filename, bool isCopy) if (openInAdminModeRes == IDYES) { - TCHAR nppFullPath[MAX_PATH]; + TCHAR nppFullPath[MAX_PATH]{}; ::GetModuleFileName(NULL, nppFullPath, MAX_PATH); generic_string args = TEXT("-multiInst"); @@ -696,7 +696,7 @@ bool Notepad_plus::doSave(BufferID id, const TCHAR * filename, bool isCopy) if (openInAdminModeRes == IDYES) { - TCHAR nppFullPath[MAX_PATH]; + TCHAR nppFullPath[MAX_PATH]{}; ::GetModuleFileName(NULL, nppFullPath, MAX_PATH); BufferID bufferID = _pEditView->getCurrentBufferID(); @@ -1612,8 +1612,8 @@ bool Notepad_plus::fileSave(BufferID id) } else if (backup == bak_verbose) { - const int temBufLen = 32; - TCHAR tmpbuf[temBufLen]; + constexpr int temBufLen = 32; + TCHAR tmpbuf[temBufLen]{}; time_t ltime = time(0); struct tm *today; @@ -2412,7 +2412,7 @@ bool Notepad_plus::fileLoadSession(const TCHAR *fn) } if (!isEmptyNpp && (nppGUI._multiInstSetting == multiInstOnSession || nppGUI._multiInstSetting == multiInst)) { - TCHAR nppFullPath[MAX_PATH]; + TCHAR nppFullPath[MAX_PATH]{}; ::GetModuleFileName(NULL, nppFullPath, MAX_PATH); diff --git a/PowerEditor/src/WinControls/AnsiCharPanel/ansiCharPanel.h b/PowerEditor/src/WinControls/AnsiCharPanel/ansiCharPanel.h index 4dc22bbe5..deb5092b8 100644 --- a/PowerEditor/src/WinControls/AnsiCharPanel/ansiCharPanel.h +++ b/PowerEditor/src/WinControls/AnsiCharPanel/ansiCharPanel.h @@ -38,29 +38,29 @@ public: _ppEditView = ppEditView; }; - void setParent(HWND parent2set){ - _hParent = parent2set; - }; + void setParent(HWND parent2set){ + _hParent = parent2set; + }; void switchEncoding(); void insertChar(unsigned char char2insert) const; void insertString(LPWSTR string2insert) const; - virtual void setBackgroundColor(int bgColour) const { + void setBackgroundColor(COLORREF bgColour) override { ListView_SetBkColor(_listView.getHSelf(), bgColour); ListView_SetTextBkColor(_listView.getHSelf(), bgColour); _listView.redraw(true); - }; - virtual void setForegroundColor(int fgColour) const { + }; + + void setForegroundColor(COLORREF fgColour) override { ListView_SetTextColor(_listView.getHSelf(), fgColour); _listView.redraw(true); - }; - + }; + protected: - virtual intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam); + intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam) override; private: ScintillaEditView **_ppEditView = nullptr; AsciiListView _listView; }; - diff --git a/PowerEditor/src/WinControls/DockingWnd/Gripper.h b/PowerEditor/src/WinControls/DockingWnd/Gripper.h index 2d6472fa6..75e18206a 100644 --- a/PowerEditor/src/WinControls/DockingWnd/Gripper.h +++ b/PowerEditor/src/WinControls/DockingWnd/Gripper.h @@ -121,22 +121,22 @@ private: DockingCont *_pCont = nullptr; // mouse offset in moving rectangle - POINT _ptOffset = {}; + POINT _ptOffset{}; // remembers old mouse point - POINT _ptOld = {}; + POINT _ptOld{}; BOOL _bPtOldValid = FALSE; // remember last drawn rectangle (jg) - RECT _rcPrev = {}; + RECT _rcPrev{}; // for sorting tabs HWND _hTab = nullptr; HWND _hTabSource = nullptr; BOOL _startMovingFromTab = FALSE; int _iItem = 0; - RECT _rcItem = {}; - TCITEM _tcItem; + RECT _rcItem{}; + TCITEM _tcItem{}; HDC _hdc = nullptr; HBITMAP _hbm = nullptr; diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp index 52040b0e2..b573ea97e 100644 --- a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp +++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp @@ -3255,11 +3255,9 @@ intptr_t CALLBACK LanguageSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA // Find the first separator which is between IDM_LANG_TEXT and languages int nbItem = ::GetMenuItemCount(subMenu); int x = 0; - MENUITEMINFO menuItemInfo - { - .cbSize = sizeof(MENUITEMINFO), - .fMask = MIIM_FTYPE - }; + MENUITEMINFO menuItemInfo{}; + menuItemInfo.cbSize = sizeof(MENUITEMINFO); + menuItemInfo.fMask = MIIM_FTYPE; for (; x < nbItem; ++x) { ::GetMenuItemInfo(subMenu, x, TRUE, &menuItemInfo); diff --git a/PowerEditor/src/WinControls/TreeView/TreeView.cpp b/PowerEditor/src/WinControls/TreeView/TreeView.cpp index 55f961735..874b3f48b 100644 --- a/PowerEditor/src/WinControls/TreeView/TreeView.cpp +++ b/PowerEditor/src/WinControls/TreeView/TreeView.cpp @@ -73,7 +73,7 @@ LRESULT TreeView::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) // with the TVE_COLLAPSE and TVE_COLLAPSERESET flags set. // That in turn removes child items which is unwanted. // Below is a workaround for that. - TVITEM tvItem = {}; + TVITEM tvItem{}; tvItem.hItem = reinterpret_cast(lParam); tvItem.mask = TVIF_STATE | TVIF_HANDLE | TVIF_PARAM; tvItem.stateMask = TVIS_EXPANDEDONCE; @@ -83,7 +83,7 @@ LRESULT TreeView::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { // If the flag is set, then manually notify parent that an item is collapsed/expanded // so that it can change icon, etc. - NMTREEVIEW nmtv = {}; + NMTREEVIEW nmtv{}; nmtv.hdr.code = TVN_ITEMEXPANDED; nmtv.hdr.hwndFrom = _hSelf; nmtv.hdr.idFrom = 0; @@ -112,7 +112,7 @@ bool TreeView::setItemParam(HTREEITEM Item2Set, LPARAM param) if (!Item2Set) return false; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = Item2Set; tvItem.mask = TVIF_PARAM; tvItem.lParam = param; @@ -126,7 +126,7 @@ LPARAM TreeView::getItemParam(HTREEITEM Item2Get) const if (!Item2Get) return false; //TCHAR textBuffer[MAX_PATH]; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = Item2Get; tvItem.mask = TVIF_PARAM; //tvItem.pszText = textBuffer; @@ -140,7 +140,7 @@ generic_string TreeView::getItemDisplayName(HTREEITEM Item2Set) const if (!Item2Set) return TEXT(""); TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = Item2Set; tvItem.mask = TVIF_TEXT; tvItem.pszText = textBuffer; @@ -154,7 +154,7 @@ bool TreeView::renameItem(HTREEITEM Item2Set, const TCHAR *newName) if (!Item2Set || !newName) return false; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = Item2Set; tvItem.mask = TVIF_TEXT; tvItem.pszText = (LPWSTR)newName; @@ -165,7 +165,7 @@ bool TreeView::renameItem(HTREEITEM Item2Set, const TCHAR *newName) HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iImage, LPARAM lParam) { - TVITEM tvi; + TVITEM tvi{}; tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM; // Set the item label. @@ -178,7 +178,7 @@ HTREEITEM TreeView::addItem(const TCHAR *itemName, HTREEITEM hParentItem, int iI tvi.lParam = lParam; - TVINSERTSTRUCT tvInsertStruct; + TVINSERTSTRUCT tvInsertStruct{}; tvInsertStruct.item = tvi; tvInsertStruct.hInsertAfter = TVI_LAST; tvInsertStruct.hParent = hParentItem; @@ -192,7 +192,7 @@ void TreeView::removeItem(HTREEITEM hTreeItem) cleanSubEntries(hTreeItem); // Deallocate current entry - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = hTreeItem; tvItem.mask = TVIF_PARAM; SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvItem)); @@ -217,15 +217,15 @@ void TreeView::dupTree(HTREEITEM hTree2Dup, HTREEITEM hParentItem) { for (HTREEITEM hItem = getChildFrom(hTree2Dup); hItem != NULL; hItem = getNextSibling(hItem)) { - TCHAR textBuffer[MAX_PATH]; - TVITEM tvItem; + TCHAR textBuffer[MAX_PATH]{}; + TVITEM tvItem{}; tvItem.hItem = hItem; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvItem)); - TVINSERTSTRUCT tvInsertStruct; + TVINSERTSTRUCT tvInsertStruct{}; tvInsertStruct.item = tvItem; tvInsertStruct.hInsertAfter = TVI_LAST; tvInsertStruct.hParent = hParentItem; @@ -236,16 +236,16 @@ void TreeView::dupTree(HTREEITEM hTree2Dup, HTREEITEM hParentItem) HTREEITEM TreeView::searchSubItemByName(const TCHAR *itemName, HTREEITEM hParentItem) { - HTREEITEM hItem = NULL; - if (hParentItem != NULL) + HTREEITEM hItem = nullptr; + if (hParentItem != nullptr) hItem = getChildFrom(hParentItem); else hItem = getRoot(); - for ( ; hItem != NULL; hItem = getNextSibling(hItem)) + while (hItem != nullptr) { TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = hItem; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -256,8 +256,10 @@ HTREEITEM TreeView::searchSubItemByName(const TCHAR *itemName, HTREEITEM hParent { return hItem; } + + hItem = getNextSibling(hItem); } - return NULL; + return nullptr; } BOOL TreeView::setImageList(int w, int h, int nbImage, int image_id, ...) @@ -300,7 +302,7 @@ void TreeView::cleanSubEntries(HTREEITEM hTreeItem) { for (HTREEITEM hItem = getChildFrom(hTreeItem); hItem != NULL; hItem = getNextSibling(hItem)) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = hItem; tvItem.mask = TVIF_PARAM; SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvItem)); @@ -350,7 +352,7 @@ void TreeView::foldExpandAll(bool isFold) const void TreeView::setItemImage(HTREEITEM hTreeItem, int iImage, int iSelectedImage) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = hTreeItem; tvItem.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE; tvItem.iImage = iImage; @@ -384,7 +386,7 @@ void TreeView::beginDrag(NMTREEVIEW* tv) void TreeView::dragItem(HWND parentHandle, int x, int y) { // convert the dialog coords to control coords - POINT point; + POINT point{}; point.x = (SHORT)x; point.y = (SHORT)y; ::ClientToScreen(parentHandle, &point); @@ -398,7 +400,7 @@ void TreeView::dragItem(HWND parentHandle, int x, int y) // find out if the pointer is on an item // If so, highlight the item as a drop target. - TVHITTESTINFO hitTestInfo; + TVHITTESTINFO hitTestInfo{}; hitTestInfo.pt.x = point.x; hitTestInfo.pt.y = point.y; HTREEITEM targetItem = reinterpret_cast(::SendMessage(_hSelf, TVM_HITTEST, 0, reinterpret_cast(&hitTestInfo))); @@ -486,15 +488,15 @@ bool TreeView::isParent(HTREEITEM targetItem, HTREEITEM draggedItem) void TreeView::moveTreeViewItem(HTREEITEM draggedItem, HTREEITEM targetItem) { - TCHAR textBuffer[MAX_PATH]; - TVITEM tvDraggingItem; + TCHAR textBuffer[MAX_PATH]{}; + TVITEM tvDraggingItem{}; tvDraggingItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; tvDraggingItem.pszText = textBuffer; tvDraggingItem.cchTextMax = MAX_PATH; tvDraggingItem.hItem = draggedItem; SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvDraggingItem)); - TVINSERTSTRUCT tvInsertStruct; + TVINSERTSTRUCT tvInsertStruct{}; tvInsertStruct.item = tvDraggingItem; tvInsertStruct.hInsertAfter = (HTREEITEM)TVI_LAST; tvInsertStruct.hParent = targetItem; @@ -535,10 +537,10 @@ bool TreeView::swapTreeViewItem(HTREEITEM itemGoDown, HTREEITEM itemGoUp) return false; // get both item infos - TCHAR textBufferUp[MAX_PATH]; - TCHAR textBufferDown[MAX_PATH]; - TVITEM tvUpItem; - TVITEM tvDownItem; + TCHAR textBufferUp[MAX_PATH]{}; + TCHAR textBufferDown[MAX_PATH]{}; + TVITEM tvUpItem{}; + TVITEM tvDownItem{}; tvUpItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; tvDownItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; tvUpItem.pszText = textBufferUp; @@ -551,14 +553,14 @@ bool TreeView::swapTreeViewItem(HTREEITEM itemGoDown, HTREEITEM itemGoUp) SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvDownItem)); // add 2 new items - TVINSERTSTRUCT tvInsertUp; + TVINSERTSTRUCT tvInsertUp{}; tvInsertUp.item = tvUpItem; tvInsertUp.hInsertAfter = itemTop; tvInsertUp.hParent = parentGoUp; HTREEITEM hTreeParent1stInserted = reinterpret_cast(::SendMessage(_hSelf, TVM_INSERTITEM, 0, reinterpret_cast(&tvInsertUp))); dupTree(itemGoUp, hTreeParent1stInserted); - TVINSERTSTRUCT tvInsertDown; + TVINSERTSTRUCT tvInsertDown{}; tvInsertDown.item = tvDownItem; tvInsertDown.hInsertAfter = hTreeParent1stInserted; tvInsertDown.hParent = parentGoDown; @@ -587,7 +589,7 @@ bool TreeView::swapTreeViewItem(HTREEITEM itemGoDown, HTREEITEM itemGoUp) bool TreeView::canDropIn(HTREEITEM targetItem) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_IMAGE; tvItem.hItem = targetItem; SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvItem)); @@ -603,7 +605,7 @@ bool TreeView::canDropIn(HTREEITEM targetItem) bool TreeView::canDragOut(HTREEITEM targetItem) { - TVITEM tvItem; + TVITEM tvItem{}; tvItem.mask = TVIF_IMAGE; tvItem.hItem = targetItem; SendMessage(_hSelf, TVM_GETITEM, 0, reinterpret_cast(&tvItem)); @@ -632,7 +634,7 @@ bool TreeView::searchLeafRecusivelyAndBuildTree(HTREEITEM tree2Build, const gene return false; TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = tree2Search; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -647,7 +649,7 @@ bool TreeView::searchLeafRecusivelyAndBuildTree(HTREEITEM tree2Build, const gene size_t res = itemNameUpperCase.find(text2SearchUpperCase); if (res != generic_string::npos) { - TVINSERTSTRUCT tvInsertStruct; + TVINSERTSTRUCT tvInsertStruct{}; tvInsertStruct.item = tvItem; tvInsertStruct.hInsertAfter = TVI_LAST; tvInsertStruct.hParent = tree2Build; @@ -674,7 +676,7 @@ bool TreeView::retrieveFoldingStateTo(TreeStateNode & treeState2Construct, HTREE return false; TCHAR textBuffer[MAX_PATH] = { '\0' }; - TVITEM tvItem; + TVITEM tvItem{}; tvItem.hItem = treeviewNode; tvItem.pszText = textBuffer; tvItem.cchTextMax = MAX_PATH; @@ -740,7 +742,7 @@ void TreeView::sort(HTREEITEM hTreeItem, bool isRecusive) void TreeView::customSorting(HTREEITEM hTreeItem, PFNTVCOMPARE sortingCallbackFunc, LPARAM lParam, bool isRecusive) { - TVSORTCB treeViewSortCB; + TVSORTCB treeViewSortCB{}; treeViewSortCB.hParent = hTreeItem; treeViewSortCB.lpfnCompare = sortingCallbackFunc; treeViewSortCB.lParam = lParam;