zoukankan      html  css  js  c++  java
  • 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();

  • 相关阅读:
    【转】VC 隐藏模块、MFC 改变窗口类名
    【转】Reason: The specified virtual disk needs repair.
    关于CreateProcess函数一些经验
    利用NtQuerySystemInformation函数遍历进程,遍历线程,获取线程挂起或运行状态
    uefi安装win7,deepin15双系统后grub没有windows选项
    X64下的虚拟地址到物理地址的转换
    WinDBG 技巧:列出模块(DLL/EXE)里面所有的符号(symbol)
    windows7内核分析之x86&x64第二章系统调用
    使用VS Code写PHP并进行调试
    使用CreateProcess创建新的process 并返回process运行结束返回值
  • 原文地址:https://www.cnblogs.com/killbit/p/5117308.html
Copyright © 2011-2022 走看看