• MFC clist 学习设计


    最近想设计一款WEBSHELL的综合破解工具。

    然后设计到了日志输出那儿,因为MFC不熟悉,刚学。所以一直在想用edit控件好还是clist比较好。

    今天设计了一下日志输出界面,然后记录一下学习笔记。

    void CshellDlg::panted()
    {
        m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); //插入列表
        m_list.InsertColumn(0,L"Host",0,150);
        m_list.InsertColumn(1,L"Path",0,150);
        m_list.InsertColumn(2,L"Line",0,80);
        m_list.InsertColumn(3,L"Password",0,120);
        m_list.InsertColumn(4,L"Procotol",0,50);
    }
    
    void CshellDlg::OnNMRClickList1(NMHDR *pNMHDR, LRESULT *pResult) //右键弹出菜单
    {
        LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
        // TODO: Add your control notification handler code here
        CMenu    popup;
        popup.LoadMenu(IDR_MENU1);
        CMenu*    pM = popup.GetSubMenu(0);
        CPoint    p;
        GetCursorPos(&p);
        int    count = pM->GetMenuItemCount();
    //    if (m_list.GetSelectedCount() == 0)       //如果没有选中
    //    { 
            for (int i = 0; i < count; i++)
            {
                pM->EnableMenuItem(i,   MF_DISABLED | MF_GRAYED);          //菜单全部变灰
            }
    
    //    }
        pM->TrackPopupMenu(TPM_LEFTALIGN, p.x, p.y, this);
    
        *pResult = 0;
    }
    
    
    void CshellDlg::OnInsertInsert()
    {
        // TODO: Add your command handler code here
        HANDLE m_hTrd;
        m_hTrd = CreateThread(NULL, 0, Thread1, this, 0, NULL);
        if (m_hTrd == NULL)
        {
            AfxMessageBox(L"create thread error");
        }
    
    }
    
    DWORD WINAPI CshellDlg::Thread1(LPVOID lpParam)
    {
        CshellDlg* shell = (CshellDlg*)lpParam;
        TCHAR Filesize[11];
        for (int i =0;i<10000;i++)
        {
            //循环插入数据
            swprintf(Filesize,L"%d",i);
            int idx = shell->m_list.InsertItem(shell->m_list.GetItemCount(),L"Hello word");
            shell->m_list.SetItemText(idx,0,L"192.168.1.1");
            shell->m_list.SetItemText(idx,1,L"/owa.aspx");
            shell->m_list.SetItemText(idx,2,Filesize);
            shell->m_list.SetItemText(idx,3,L"123456");
            shell->m_list.SetItemText(idx,4,L"http");
            //    Sleep(100);
        }
        return 0;
    }
    
    
    void CshellDlg::OnInsertCleart()
    {
        m_list.DeleteAllItems(); //删除所有条目
        // TODO: Add your command handler code here
    }
    
    
    void CshellDlg::OnInsertDeletethis()
    {
        //wchar_t buffer[MAX_PATH] = {0};
        int iselect = m_list.GetSelectionMark(); //获取光标输在位置
    //    m_list.GetItemText(iselect,0,buffer,MAX_PATH); //获取条目信息
        m_list.DeleteItem(iselect); //删除光标所在的行
    }
    public:
        void panted();
        CListCtrl m_list;
        afx_msg void OnNMRClickList1(NMHDR *pNMHDR, LRESULT *pResult);
        afx_msg void OnInsertInsert();
        afx_msg void OnInsertCleart();
        afx_msg void OnInsertDeletethis();

  • 相关阅读:
    webpack + vue 打包生成公共配置文件(域名) 方便动态修改
    前端实用工具大集合
    Javascript高级程序设计--读书笔记之理解原型对象
    Javascript高级程序设计--读书笔记之面向对象(二)
    Javascript高级程序设计--读书笔记之面向对象(一)
    Javascript高级程序设计--读书笔记之Array类型
    javascript 中的函数
    CF1037H Security (SAM+二维偏序)
    搜索和组合数学P1246 编码
    模拟画图题P1185 绘制二叉树
  • 原文地址:https://www.cnblogs.com/killbit/p/5117308.html
Copyright © 2020-2023  润新知