📄 util.c
字号:
HTREEITEM hParent, HTREEITEM hAfter,
char *pszText)
{
TVINSERTSTRUCT tvInsert;
HWND hTree = GetDlgItem(hWnd, nID);
//
if (!hParent && !hAfter)
{
tvInsert.hParent = 0L;
tvInsert.hInsertAfter = 0L;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = pszText;
return (HTREEITEM)SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)&tvInsert);
};
//
tvInsert.hParent = hParent;
tvInsert.hInsertAfter = hAfter;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = pszText;
return (HTREEITEM)SendMessage(hTree, TVM_INSERTITEM, 0, (LPARAM)&tvInsert);
};
//
HTREEITEM TreeViewFindChild(HWND hTreeView, HTREEITEM hRoot,
const char *szBuf)
{
HTREEITEM hChildItem = 0L;
HTREEITEM hParentItem = hRoot;
char szText[128] = {0};
TVITEM tvItem = {0};
int iLoop;
int nIndex;
//
tvItem.mask = TVIF_TEXT|TVIF_HANDLE;
tvItem.pszText = szText;
tvItem.cchTextMax = sizeof(char)*127;
nIndex = (int)SendMessage(hTreeView, TVM_GETCOUNT, 0, 0);
RtlZeroMemory(szText, sizeof(char)*128);
for (iLoop = 0; iLoop < nIndex; iLoop++)
{
hChildItem = (HTREEITEM)SendMessage(hTreeView,
TVM_GETNEXTITEM,
(iLoop) ? TVGN_NEXT : TVGN_CHILD,
(iLoop) ? (LPARAM)hParentItem : (LPARAM)hRoot);
tvItem.hItem = hChildItem;
SendMessage(hTreeView, TVM_GETITEM, 0, (LPARAM)&tvItem);
if (*szText)
{
if (!strcmp(szBuf, szText))
return hChildItem;
};
hParentItem = hChildItem;
};
return 0;
};
//
HTREEITEM MakeDeviceRootTree(SP_CLASSIMAGELIST_DATA spImageData,
const UINT nIdTree, const UINT nIdBmp)
{
TVINSERTSTRUCT tvStruct = {0};
HIMAGELIST hImageListTree = 0L;
HTREEITEM hTreeItem = 0L;
HBITMAP hBitmap = 0L;
int nIndex = MAX_PATH-1;
char szName[MAX_PATH] = {0};
//
GetComputerName(szName, &nIndex);
hBitmap = LoadBitmap(_hInst, MAKEINTRESOURCE(nIdBmp));
nIndex = ImageList_Add(spImageData.ImageList, hBitmap, 0L);
DeleteObject(hBitmap);
SendMessage(GetDlgItem(_hDlg, nIdTree), TVM_SETIMAGELIST,
TVSIL_NORMAL, (LPARAM)spImageData.ImageList);
if (ImageList_GetImageCount(spImageData.ImageList) != -1)
{
tvStruct.hParent = 0L;
tvStruct.hInsertAfter = TVI_ROOT;
tvStruct.item.mask = TVIF_IMAGE | TVIF_TEXT | TVIF_SELECTEDIMAGE;
tvStruct.item.pszText = szName;
tvStruct.item.iImage = nIndex;
tvStruct.item.iSelectedImage = nIndex;
hTreeItem = (HTREEITEM)SendMessage(GetDlgItem(_hDlg, nIdTree),
TVM_INSERTITEM, 0, (LPARAM)&tvStruct);
return hTreeItem;
};
return 0;
};
//
UINT IsTreeViewClkEvent(const UINT nID, NMHDR* pnmh)
{
if (pnmh->idFrom == nID)
{
if (pnmh->code == NM_CLICK)
return NM_CLICK;
else if (pnmh->code == NM_RCLICK)
return NM_RCLICK;
};
return 0;
};
//
UINT IsTreeViewSelectChanged(const UINT nID, NMHDR* pnmh)
{
if (pnmh->code == TVN_SELCHANGED && pnmh->idFrom == nID)
return TVN_SELCHANGED;
return 0;
};
//
void TreeViewExpand(HWND hTree, HTREEITEM hTreeItem, const BOOL bExpand)
{
UINT flags = (bExpand) ? TVE_EXPAND : TVE_COLLAPSE;
//
SendMessage(hTree, TVM_EXPAND, (WPARAM)flags, (LPARAM)hTreeItem);
};
//
void TreeViewGetSelectText(HWND hTree, NMHDR* pnmh, TVITEM* pItem)
{
NMTREEVIEW *pnmView = (NMTREEVIEW*)pnmh;
char pszText[MAX_PATH] = {0};
//
pItem->mask = TVIF_TEXT;
pItem->hItem = pnmView->itemNew.hItem;
do
{
pItem->pszText = pszText;
pItem->cchTextMax = MAX_PATH-1;
// SendMessage(hTree, TVM_GETNEXTITEM, TVGN_CARET, (LPARAM)pItem);
SendMessage(hTree, TVM_GETITEM, 0, (LPARAM)pItem);
if (strlen(pItem->pszText))
break;
} while (1);
};
//
void TreeViewRemoveAllNodes(HWND hDlg, const UINT nIdTree)
{
HWND hTree = GetDlgItem(hDlg, nIdTree);
short wCnt = (short)SendMessage(hDlg, TVM_GETCOUNT, 0, 0);
short wLoop;
//
for (wLoop = 0; wLoop < wCnt; wLoop)
SendMessage(hTree, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT);
SendMessage(hTree, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT);
};
//
/*********************************************************************/
/* String */
/*********************************************************************/
void FindComma(char *szData)
{
short wLen = (short)strlen(szData);
short wIdx;
short wLoop;
char szTmp[128] = {0};
//
for (wIdx = 0, wLoop = 0; wLoop < wLen; wLoop++)
{
if (szData[wLoop] == ',')
szData[wLoop] = '.';
else if (szData[wLoop] == ' ')
continue;
szTmp[wIdx++] = szData[wLoop];
};
memcpy(szData, szTmp, wIdx*sizeof(char));
szData[wIdx] = 0;
};
//
void StrRight(char *szData, short wCount)
{
short wLen = (short)strlen(szData)-wCount;
//
if (wCount < 0)
wCount = 0;
if (wCount >= (short)strlen(szData))
return;
//
memmove(szData, szData+wLen, wCount*sizeof(char));
szData[wCount] = 0;
};
//
void StrLTrim(char *szData)
{
char *ptr = szData;
//
while (isspace(*ptr))
ptr = _tcsinc(ptr);
//
if (strcmp(ptr, szData))
{
short wLen = (short)(strlen(szData) - (ptr - szData));
memmove(szData, ptr, (wLen+1)*sizeof(char));
};
};
//
void StrRTrim(char *szData)
{
char *ptr = szData;
char *pTmp = 0L;
//
while (*ptr != 0)
{
if (isspace(*ptr))
{
if (!pTmp)
pTmp = ptr;
}
else
pTmp = 0L;
ptr = _tcsinc(ptr);
};
//
if (pTmp)
{
*pTmp = 0;
memmove(szData, szData, strlen(szData)-strlen(pTmp));
};
};
//
void ConvertGUIDToString(const GUID guid, char *pData)
{
char szData[30] = {0};
char szTmp[3] = {0};
short wLoop;
//
sprintf(pData, "%04X-%02X-%02X-", guid.Data1,
guid.Data2, guid.Data3);
for (wLoop = 0; wLoop < 8; wLoop++)
{
if (wLoop == 2)
strcat(szData, "-");
sprintf(szTmp, "%02X", guid.Data4[wLoop]);
strcat(szData, szTmp);
};
// szTmp[wLoop] = guid.Data4[wLoop];
memcpy(pData+strlen(pData), szData, strlen(szData));
};
//
/*********************************************************************/
/* ListView-Image */
/*********************************************************************/
void SetOverlayImage(HIMAGELIST hImage, const int iImage, const int iOverlay)
{
ImageList_SetOverlayImage(hImage, iImage, iOverlay);
};
//
int GetImageCount(HIMAGELIST hImage)
{
return ImageList_GetImageCount(hImage);
};
//
int ListViewSetImageList(HWND hList, const int nList, LPARAM lParam)
{
WPARAM imageList = LVSIL_NORMAL;
//
if (nList)
imageList = nList;
return (int)SendMessage(hList, LVM_SETIMAGELIST,
imageList, lParam);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -