⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 防止进程被关测试通过
💻 C
📖 第 1 页 / 共 2 页
字号:
                                 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 + -