Skip to content

Commit

Permalink
Make both project C++ compatible, fix some code analysis warnings.
Browse files Browse the repository at this point in the history
  • Loading branch information
zufuliu committed Dec 9, 2018
1 parent 829cd5f commit f4f7ef8
Show file tree
Hide file tree
Showing 34 changed files with 319 additions and 200 deletions.
12 changes: 7 additions & 5 deletions metapath/src/Dialogs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1269,6 +1269,8 @@ typedef struct tagFILEOPDLGDATA {
UINT wFunc;
} FILEOPDLGDATA, *LPFILEOPDLGDATA;

typedef const FILEOPDLGDATA * LPCFILEOPDLGDATA;

extern int cxRenameFileDlg;
//=============================================================================
//
Expand All @@ -1280,7 +1282,7 @@ INT_PTR CALLBACK RenameFileDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM l
case WM_INITDIALOG: {
SetWindowLongPtr(hwnd, DWLP_USER, lParam);
ResizeDlg_InitX(hwnd, cxRenameFileDlg, IDC_RESIZEGRIP2);
LPFILEOPDLGDATA lpfod = (LPFILEOPDLGDATA)lParam;
const LPCFILEOPDLGDATA lpfod = (LPCFILEOPDLGDATA)lParam;

SetDlgItemText(hwnd, IDC_OLDNAME, lpfod->szSource);
SetDlgItemText(hwnd, IDC_NEWNAME, lpfod->szSource);
Expand Down Expand Up @@ -1408,7 +1410,7 @@ INT_PTR CALLBACK CopyMoveDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lPa
ResizeDlg_InitX(hwnd, cxCopyMoveDlg, IDC_RESIZEGRIP5);
MakeBitmapButton(hwnd, IDC_BROWSEDESTINATION, g_hInstance, IDB_OPEN);

LPFILEOPDLGDATA lpfod = (LPFILEOPDLGDATA)lParam;
const LPCFILEOPDLGDATA lpfod = (LPCFILEOPDLGDATA)lParam;
HWND hwndDest = GetDlgItem(hwnd, IDC_DESTINATION);
MRU_LoadToCombobox(hwndDest, MRU_KEY_COPY_MOVE_HISTORY);
SendMessage(hwndDest, CB_SETCURSEL, 0, 0);
Expand Down Expand Up @@ -1659,7 +1661,7 @@ INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lPa
break;

case LVN_ITEMCHANGED: {
NM_LISTVIEW *pnmlv = (NM_LISTVIEW *)lParam;
const NM_LISTVIEW *pnmlv = (NM_LISTVIEW *)lParam;
EnableWindow(GetDlgItem(hwnd, IDOK), (pnmlv->uNewState & LVIS_SELECTED));
}
break;
Expand Down Expand Up @@ -1717,7 +1719,7 @@ INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lPa
// OpenWithDlg()
//
//
BOOL OpenWithDlg(HWND hwnd, LPDLITEM lpdliParam) {
BOOL OpenWithDlg(HWND hwnd, LPCDLITEM lpdliParam) {
DLITEM dliOpenWith;
dliOpenWith.mask = DLI_FILENAME;

Expand Down Expand Up @@ -1848,7 +1850,7 @@ INT_PTR CALLBACK NewDirDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lPara
BOOL NewDirDlg(HWND hwnd, LPWSTR pszNewDir) {
FILEOPDLGDATA fod;

if (IDOK == ThemedDialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_NEWDIR), hwnd, NewDirDlgProc, (LPARAM)&fod)) {
if (IDOK == ThemedDialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_NEWDIR), hwnd, NewDirDlgProc, (LPARAM)&fod)) {
lstrcpy(pszNewDir, fod.szDestination);
return TRUE;
}
Expand Down
2 changes: 1 addition & 1 deletion metapath/src/Dialogs.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ INT_PTR OptionsPropSheet(HWND hwnd, HINSTANCE hInstance);
BOOL GetFilterDlg(HWND hwnd);
BOOL RenameFileDlg(HWND hwnd);
BOOL CopyMoveDlg(HWND hwnd, UINT *wFunc);
BOOL OpenWithDlg(HWND hwnd, LPDLITEM lpdliParam);
BOOL OpenWithDlg(HWND hwnd, LPCDLITEM lpdliParam);
BOOL NewDirDlg(HWND hwnd, LPWSTR pszNewDir);

INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam);
Expand Down
28 changes: 17 additions & 11 deletions metapath/src/Dlapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ typedef struct tagDLDATA { // dl
HANDLE hIconThread;
} DLDATA, *LPDLDATA;

typedef const DLDATA * LPCDLDATA;

//==== Property Name ==========================================================
static const WCHAR *pDirListProp = L"DirListData";

Expand Down Expand Up @@ -486,7 +488,7 @@ BOOL DirList_GetDispInfo(HWND hwnd, LPARAM lParam, BOOL bNoFadeHidden) {
// from the control
//
BOOL DirList_DeleteItem(HWND hwnd, LPARAM lParam) {
NM_LISTVIEW *lpnmlv = (NM_LISTVIEW *)lParam;
const NM_LISTVIEW *lpnmlv = (NM_LISTVIEW *)lParam;

LV_ITEM lvi;
lvi.iItem = lpnmlv->iItem;
Expand Down Expand Up @@ -516,8 +518,8 @@ BOOL DirList_DeleteItem(HWND hwnd, LPARAM lParam) {
// Compares two list items
//
int CALLBACK DirList_CompareProcFw(LPARAM lp1, LPARAM lp2, LPARAM lFlags) {
LPLV_ITEMDATA lplvid1 = (LPLV_ITEMDATA)lp1;
LPLV_ITEMDATA lplvid2 = (LPLV_ITEMDATA)lp2;
const LPCLV_ITEMDATA lplvid1 = (LPCLV_ITEMDATA)lp1;
const LPCLV_ITEMDATA lplvid2 = (LPCLV_ITEMDATA)lp2;

#if defined(__cplusplus)
HRESULT hr = lplvid1->lpsf->CompareIDs(lFlags, lplvid1->pidl, lplvid2->pidl);
Expand All @@ -541,8 +543,8 @@ int CALLBACK DirList_CompareProcFw(LPARAM lp1, LPARAM lp2, LPARAM lFlags) {
}

int CALLBACK DirList_CompareProcRw(LPARAM lp1, LPARAM lp2, LPARAM lFlags) {
LPLV_ITEMDATA lplvid1 = (LPLV_ITEMDATA)lp1;
LPLV_ITEMDATA lplvid2 = (LPLV_ITEMDATA)lp2;
const LPCLV_ITEMDATA lplvid1 = (LPCLV_ITEMDATA)lp1;
const LPCLV_ITEMDATA lplvid2 = (LPCLV_ITEMDATA)lp2;

#if defined(__cplusplus)
HRESULT hr = lplvid1->lpsf->CompareIDs(lFlags, lplvid1->pidl, lplvid2->pidl);
Expand Down Expand Up @@ -743,10 +745,14 @@ BOOL DirList_PropertyDlg(HWND hwnd, int iItem) {
//
// Execute an OLE Drag & Drop Operation in response to LVN_BEGIN(R)DRAG
//
#if defined(__cplusplus)
extern "C" HANDLE CreateDropSource(void);
#else
extern HANDLE CreateDropSource(void);
#endif

void DirList_DoDragDrop(HWND hwnd, LPARAM lParam) {
NM_LISTVIEW *pnmlv = (NM_LISTVIEW *)lParam;
const NM_LISTVIEW *pnmlv = (NM_LISTVIEW *)lParam;

LV_ITEM lvi;
lvi.iItem = pnmlv->iItem;
Expand Down Expand Up @@ -788,7 +794,7 @@ void DirList_DoDragDrop(HWND hwnd, LPARAM lParam) {
//
BOOL DirList_GetLongPathName(HWND hwnd, LPWSTR lpszLongPath) {
WCHAR tch[MAX_PATH];
LPDLDATA lpdl = (LPDLDATA)GetProp(hwnd, pDirListProp);
const LPCDLDATA lpdl = (LPCDLDATA)GetProp(hwnd, pDirListProp);
if (SHGetPathFromIDList(lpdl->pidl, tch)) {
lstrcpy(lpszLongPath, tch);
return TRUE;
Expand Down Expand Up @@ -890,7 +896,7 @@ void DirList_CreateFilter(PDL_FILTER pdlf, LPCWSTR lpszFileSpec, BOOL bExcludeFi
//
// Check if a specified item matches a given filter
//
BOOL DirList_MatchFilter(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidl, PDL_FILTER pdlf) {
BOOL DirList_MatchFilter(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidl, LPCDL_FILTER pdlf) {
// Immediately return true if lpszFileSpec is *.* or NULL
if (pdlf->nCount == 0 && !pdlf->bExcludeFilter) {
return TRUE;
Expand Down Expand Up @@ -1008,7 +1014,7 @@ int DriveBox_Fill(HWND hwnd) {
cbei2.iItem = 0;

while ((SendMessage(hwnd, CBEM_GETITEM, 0, (LPARAM)&cbei2))) {
LPDC_ITEMDATA lpdcid2 = (LPDC_ITEMDATA)cbei2.lParam;
const LPCLV_ITEMDATA lpdcid2 = (LPCLV_ITEMDATA)cbei2.lParam;
hr = lpdcid->lpsf->CompareIDs(0, lpdcid->pidl, lpdcid2->pidl);

if ((short)HRESULT_CODE(hr) < 0) {
Expand Down Expand Up @@ -1062,7 +1068,7 @@ int DriveBox_Fill(HWND hwnd) {
cbei2.iItem = 0;

while ((SendMessage(hwnd, CBEM_GETITEM, 0, (LPARAM)&cbei2))) {
LPDC_ITEMDATA lpdcid2 = (LPDC_ITEMDATA)cbei2.lParam;
const LPCLV_ITEMDATA lpdcid2 = (LPCLV_ITEMDATA)cbei2.lParam;
hr = lpdcid->lpsf->lpVtbl->CompareIDs(lpdcid->lpsf, 0, lpdcid->pidl, lpdcid2->pidl);

if ((short)HRESULT_CODE(hr) < 0) {
Expand Down Expand Up @@ -1241,7 +1247,7 @@ BOOL DriveBox_PropertyDlg(HWND hwnd) {
// DriveBox_DeleteItem
//
LRESULT DriveBox_DeleteItem(HWND hwnd, LPARAM lParam) {
NMCOMBOBOXEX *lpnmcbe = (NMCOMBOBOXEX *)lParam;
const NMCOMBOBOXEX *lpnmcbe = (NMCOMBOBOXEX *)lParam;
COMBOBOXEXITEM cbei;
cbei.iItem = lpnmcbe->ceItem.iItem;

Expand Down
10 changes: 8 additions & 2 deletions metapath/src/Dlapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ typedef struct tagLV_ITEMDATA { // lvid
LPSHELLFOLDER lpsf; // Parent IShellFolder Interface
} LV_ITEMDATA, *LPLV_ITEMDATA;

typedef const LV_ITEMDATA *LPCLV_ITEMDATA;

BOOL DirList_Init(HWND hwnd, LPCWSTR pszHeader);
BOOL DirList_Destroy(HWND hwnd);
BOOL DirList_StartIconThread(HWND hwnd);
Expand Down Expand Up @@ -69,6 +71,8 @@ typedef struct tagDLITEM { // dli
int ntype;
} DLITEM, *LPDLITEM;

typedef const DLITEM *LPCDLITEM;

int DirList_GetItem(HWND hwnd, int iItem, LPDLITEM lpdli);
int DirList_GetItemEx(HWND hwnd, int iItem, LPWIN32_FIND_DATA pfd);
BOOL DirList_PropertyDlg(HWND hwnd, int iItem);
Expand All @@ -83,10 +87,12 @@ typedef struct tagDL_FILTER { //dlf
WCHAR tFilterBuf[DL_FILTER_BUFSIZE];
LPWSTR pFilter[DL_FILTER_BUFSIZE];
BOOL bExcludeFilter;
} DL_FILTER, *PDL_FILTER;
} DL_FILTER, *PDL_FILTER, *LPDL_FILTER;

typedef const DL_FILTER *LPCDL_FILTER;

void DirList_CreateFilter(PDL_FILTER pdlf, LPCWSTR lpszFileSpec, BOOL bExcludeFilter);
BOOL DirList_MatchFilter(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidl, PDL_FILTER pdlf);
BOOL DirList_MatchFilter(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidl, LPCDL_FILTER pdlf);

BOOL DriveBox_Init(HWND hwnd);
int DriveBox_Fill(HWND hwnd);
Expand Down
6 changes: 1 addition & 5 deletions metapath/src/DropSource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,9 @@ STDMETHODIMP CDropSource::GiveFeedback(DWORD /*dwEffect*/) noexcept {
return DRAGDROP_S_USEDEFAULTCURSORS;
}

extern "C" {

// GCC warns -Wlto-type-mismatch for LPDROPSOURCE.
HANDLE CreateDropSource(void) {
extern "C" HANDLE CreateDropSource(void) {
return (new CDropSource);
}

}

// End of DropSource.cpp
24 changes: 13 additions & 11 deletions metapath/src/Helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,8 @@ typedef struct _resizeDlg {
int mmiPtMaxY; // only X direction
} RESIZEDLG, *PRESIZEDLG;

typedef const RESIZEDLG *LPCRESIZEDLG;

void ResizeDlg_InitEx(HWND hwnd, int cxFrame, int cyFrame, int nIdGrip, int iDirection) {
RESIZEDLG *pm = (RESIZEDLG *)NP2HeapAlloc(sizeof(RESIZEDLG));
pm->direction = iDirection;
Expand Down Expand Up @@ -552,7 +554,7 @@ void ResizeDlg_Size(HWND hwnd, LPARAM lParam, int *cx, int *cy) {
}

void ResizeDlg_GetMinMaxInfo(HWND hwnd, LPARAM lParam) {
PRESIZEDLG pm = (PRESIZEDLG)GetProp(hwnd, RESIZEDLG_PROP_KEY);
const LPCRESIZEDLG pm = (LPCRESIZEDLG)GetProp(hwnd, RESIZEDLG_PROP_KEY);

LPMINMAXINFO lpmmi = (LPMINMAXINFO)lParam;
lpmmi->ptMinTrackSize.x = pm->mmiPtMinX;
Expand Down Expand Up @@ -627,7 +629,7 @@ void DeleteBitmapButton(HWND hwnd, int nCtlId) {
void SetWindowTransparentMode(HWND hwnd, BOOL bTransparentMode, int iOpacityLevel) {
const LONG_PTR exStyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE);
if (bTransparentMode) {
SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle | WS_EX_LAYERED);
SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle | WS_EX_LAYERED);
const BYTE bAlpha = (BYTE)(iOpacityLevel * 255 / 100);
SetLayeredWindowAttributes(hwnd, 0, bAlpha, LWA_ALPHA);
} else {
Expand All @@ -638,7 +640,7 @@ void SetWindowTransparentMode(HWND hwnd, BOOL bTransparentMode, int iOpacityLeve
void SetWindowLayoutRTL(HWND hwnd, BOOL bRTL) {
const LONG_PTR exStyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE);
if (bRTL) {
SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle | WS_EX_LAYOUTRTL);
SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle | WS_EX_LAYOUTRTL);
} else {
SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle & ~WS_EX_LAYOUTRTL);
}
Expand Down Expand Up @@ -732,7 +734,7 @@ void PathRelativeToApp(LPCWSTR lpszSrc, LPWSTR lpszDest, int cchDest, BOOL bSrcI
WCHAR wchWinDir[MAX_PATH];
WCHAR wchUserFiles[MAX_PATH];
WCHAR wchPath[MAX_PATH];
DWORD dwAttrTo = bSrcIsFile ? 0 : FILE_ATTRIBUTE_DIRECTORY;
const DWORD dwAttrTo = bSrcIsFile ? 0 : FILE_ATTRIBUTE_DIRECTORY;

GetModuleFileName(NULL, wchAppPath, COUNTOF(wchAppPath));
PathRemoveFileSpec(wchAppPath);
Expand Down Expand Up @@ -1488,7 +1490,7 @@ BOOL History_Back(PHISTORY ph, LPWSTR pszItem, int cItem) {
return FALSE;
}

BOOL History_CanForward(PHISTORY ph) {
BOOL History_CanForward(LCPHISTORY ph) {
if (!ph) {
return FALSE;
}
Expand All @@ -1502,7 +1504,7 @@ BOOL History_CanForward(PHISTORY ph) {
return FALSE;
}

BOOL History_CanBack(PHISTORY ph) {
BOOL History_CanBack(LCPHISTORY ph) {
if (!ph) {
return FALSE;
}
Expand All @@ -1516,7 +1518,7 @@ BOOL History_CanBack(PHISTORY ph) {
return FALSE;
}

void History_UpdateToolbar(PHISTORY ph, HWND hwnd, int cmdBack, int cmdForward) {
void History_UpdateToolbar(LCPHISTORY ph, HWND hwnd, int cmdBack, int cmdForward) {
if (History_CanBack(ph)) {
SendMessage(hwnd, TB_ENABLEBUTTON, cmdBack, MAKELPARAM(1, 0));
} else {
Expand Down Expand Up @@ -1554,7 +1556,7 @@ BOOL MRU_Destroy(LPMRULIST pmru) {
return 1;
}

int MRU_Compare(LPMRULIST pmru, LPCWSTR psz1, LPCWSTR psz2) {
int MRU_Compare(LPCMRULIST pmru, LPCWSTR psz1, LPCWSTR psz2) {
return (pmru->iFlags & MRU_NOCASE) ? StrCmpI(psz1, psz2) : StrCmp(psz1, psz2);
}

Expand Down Expand Up @@ -1598,7 +1600,7 @@ BOOL MRU_Empty(LPMRULIST pmru) {
return TRUE;
}

int MRU_Enum(LPMRULIST pmru, int iIndex, LPWSTR pszItem, int cchItem) {
int MRU_Enum(LPCMRULIST pmru, int iIndex, LPWSTR pszItem, int cchItem) {
if (pszItem == NULL || cchItem == 0) {
int i = 0;
while (i < pmru->iSize && pmru->pszItems[i]) {
Expand Down Expand Up @@ -1648,7 +1650,7 @@ BOOL MRU_Load(LPMRULIST pmru) {
return TRUE;
}

BOOL MRU_Save(LPMRULIST pmru) {
BOOL MRU_Save(LPCMRULIST pmru) {
if (MRU_GetCount(pmru) == 0) {
IniClearSection(pmru->szRegKey);
return TRUE;
Expand Down Expand Up @@ -1806,7 +1808,7 @@ DLGTEMPLATE *LoadThemedDialogTemplate(LPCWSTR lpDialogTemplateID, HINSTANCE hIns
}

HGLOBAL hRsrcMem = LoadResource(hInstance, hRsrc);
DLGTEMPLATE *pRsrcMem = (DLGTEMPLATE *)LockResource(hRsrcMem);
const DLGTEMPLATE *pRsrcMem = (DLGTEMPLATE *)LockResource(hRsrcMem);
const UINT dwTemplateSize = (UINT)SizeofResource(hInstance, hRsrc);

DLGTEMPLATE *pTemplate = dwTemplateSize ? (DLGTEMPLATE *)NP2HeapAlloc(dwTemplateSize + LF_FACESIZE * 2) : NULL;
Expand Down
18 changes: 11 additions & 7 deletions metapath/src/Helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -359,16 +359,18 @@ BOOL ExecDDECommand(LPCWSTR lpszCmdLine, LPCWSTR lpszDDEMsg, LPCWSTR lpszDDEApp,
typedef struct tagHISTORY {
WCHAR *psz[HISTORY_ITEMS]; // Strings
int iCurItem; // Current Item
} HISTORY, *PHISTORY;
} HISTORY, *PHISTORY, *LPHISTORY;

typedef const HISTORY *LCPHISTORY;

BOOL History_Init(PHISTORY ph);
BOOL History_Uninit(PHISTORY ph);
BOOL History_Add(PHISTORY ph, LPCWSTR pszNew);
BOOL History_Forward(PHISTORY ph, LPWSTR pszItem, int cItem);
BOOL History_Back(PHISTORY ph, LPWSTR pszItem, int cItem);
BOOL History_CanForward(PHISTORY ph);
BOOL History_CanBack(PHISTORY ph);
void History_UpdateToolbar(PHISTORY ph, HWND hwnd, int cmdBack, int cmdForward);
BOOL History_CanForward(LCPHISTORY ph);
BOOL History_CanBack(LCPHISTORY ph);
void History_UpdateToolbar(LCPHISTORY ph, HWND hwnd, int cmdBack, int cmdForward);

//==== MRU Functions ==========================================================
#define MRU_MAXITEMS 24
Expand All @@ -386,17 +388,19 @@ typedef struct _mrulist {
LPWSTR pszItems[MRU_MAXITEMS];
} MRULIST, *PMRULIST, *LPMRULIST;

typedef const MRULIST *LPCMRULIST;

LPMRULIST MRU_Create(LPCWSTR pszRegKey, int iFlags, int iSize);
BOOL MRU_Destroy(LPMRULIST pmru);
BOOL MRU_Add(LPMRULIST pmru, LPCWSTR pszNew);
BOOL MRU_Delete(LPMRULIST pmru, int iIndex);
BOOL MRU_Empty(LPMRULIST pmru);
int MRU_Enum(LPMRULIST pmru, int iIndex, LPWSTR pszItem, int cchItem);
NP2_inline int MRU_GetCount(LPMRULIST pmru) {
int MRU_Enum(LPCMRULIST pmru, int iIndex, LPWSTR pszItem, int cchItem);
NP2_inline int MRU_GetCount(LPCMRULIST pmru) {
return MRU_Enum(pmru, 0, NULL, 0);
}
BOOL MRU_Load(LPMRULIST pmru);
BOOL MRU_Save(LPMRULIST pmru);
BOOL MRU_Save(LPCMRULIST pmru);
void MRU_LoadToCombobox(HWND hwnd, LPCWSTR pszKey);
void MRU_AddOneItem(LPCWSTR pszKey, LPCWSTR pszNewItem);
void MRU_ClearCombobox(HWND hwnd, LPCWSTR pszKey);
Expand Down
Loading

0 comments on commit f4f7ef8

Please sign in to comment.