windows-nt/Source/XPSP1/NT/shell/shell32/ctllogic.cpp
2020-09-26 16:20:57 +08:00

74 lines
1.2 KiB
C++

#include "shellprv.h"
#include "ids.h"
#include "ctllogic.h"
BOOL _GetListViewSelectedLVITEM(HWND hwndList, LVITEM* plvitem)
{
BOOL fFound = FALSE;
int iCount = ListView_GetItemCount(hwndList);
plvitem->mask |= LVIF_STATE;
plvitem->stateMask = LVIS_SELECTED;
for (int j = 0; j < iCount; ++j)
{
plvitem->iItem = j;
ListView_GetItem(hwndList, plvitem);
if (plvitem->state & LVIS_SELECTED)
{
fFound = TRUE;
break;
}
}
return fFound;
}
HRESULT _GetListViewSelectedLPARAM(HWND hwndList, LPARAM* plparam)
{
HRESULT hr;
LVITEM lvitem = {0};
lvitem.mask = LVIF_PARAM;
if (_GetListViewSelectedLVITEM(hwndList, &lvitem))
{
hr = S_OK;
*plparam = lvitem.lParam;
}
else
{
hr = S_FALSE;
*plparam = NULL;
}
return hr;
}
// ComboBox
HRESULT _GetComboBoxSelectedLRESULT(HWND hwndComboBox, LRESULT* plr)
{
HRESULT hr;
int iCurSel = ComboBox_GetCurSel(hwndComboBox);
LRESULT lr = ComboBox_GetItemData(hwndComboBox, iCurSel);
if (CB_ERR != lr)
{
hr = S_OK;
*plr = lr;
}
else
{
hr = S_FALSE;
*plr = NULL;
}
return hr;
}