zoukankan      html  css  js  c++  java
  • [6]显示获取的数据

    1.首先在初始化的时候创建一个线程来循环调用寻找人物信息的函数

    BOOL InitDialog(HWND hwnd)
    {
    
        //注册快捷键 F1
        RegisterHotKey(hwnd, 1, 0, VK_F1); //注意这里填写的热键标识符1,判断的时候也是判断标识符
        
        //存储读到的数据
        g_pPlayerBuffer = (PTCHAR)VirtualAlloc(NULL, 0X1000, MEM_COMMIT, PAGE_READWRITE);  //设置的全局变量缓冲区

        InitListView(hwnd); //初始化ListView

    return FALSE;
    
    }

    2.在点击透视按钮的时候调用线程。

        case IDC_BUTTON_VIEW:
    
                //创建一个ThreadProcGetDate的线程,循环显示人物信息,参数暂时没有就设置个局部变量
                if (!GetThreadId(g_hReadThread))
                {
                    g_hReadThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProcGetDate, (PDWORD)&dwParam, 0, NULL);
    
                }//运行前看看是否线程有效,如果没有则创建,如有有则跳过,防止用户一直按
            
                break;

    3.填写创建读取线程的函数

    /************************************************************************/
    /*             读取线程函数                                               */
    /************************************************************************/
    VOID WINAPI ThreadProcGetDate(DWORD dwParam)
    {
        ZeroMemory(g_pPlayerBuffer, sizeof stPlayerInfo * 33); //清零一块内存
    
        while (true)//通过循环调用来不停刷新人物信息    
        {
            FindPlayer(g_ProcessInfo.m_hProcess, g_ProcessInfo.m_dwBaseAddress, g_pPlayerBuffer);//调用人物查找函数
        }
    
    }

    4.将读取出的信息显示到控件上,首先初始化控件环境

    /************************************************************************/
    /*             ListView初始化                                            */
    /************************************************************************/
    VOID InitListView(HWND hWnd)
    {
        //获得对话框句柄
        HWND hListViewCT = GetDlgItem(hWnd, IDC_LIST1);//获取主窗口上的某个空间
        HWND hListViewT = GetDlgItem(hWnd, IDC_LIST2);
        //列表名称
        PTCHAR ListName[] = { TEXT("序号"),TEXT("状态"),TEXT("血量"),TEXT("x"),TEXT("y"),TEXT("z") };
    
        //列表信息
    
        LVCOLUMN  listInf = { NULL };
        listInf.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
        listInf.fmt = LVCFMT_LEFT;  //列上标题向左对齐
        listInf.cx = 60;  //每一列的宽度
        //添加列
        for (int i =0;i<6;i++)
        {    
            listInf.pszText = ListName[i];
            ListView_InsertColumn(hListViewCT, i, &listInf); //宏,往指定的控件,添加列的标头
            ListView_InsertColumn(hListViewT, i, &listInf);
        }
        //设置双缓冲
        DWORD dwSty = ListView_GetExtendedListViewStyle(hListViewCT);//获取控件当前风格
        ListView_SetExtendedListViewStyle(hListViewCT, dwStym | LVS_EX_DOUBLEBUFFER);//设置新的风格
        
        dwSty = ListView_GetExtendedListViewStyle(hListViewT);
        ListView_SetExtendedListViewStyle(hListViewT, dwStym | LVS_EX_DOUBLEBUFFER);//设置新的
        //设置图像
    }

    5.显示到控件上

    /***********************************************
    **        ListView显示数据
    ***********************************************/
    VOID ListViewPlayerInfo(HWND hWnd, PCHAR pPlayerBufferMemory)
    {
        //全局任务信息
        stPlayerInfo* pstPlayerBuffer = (stPlayerInfo*)pPlayerBufferMemory;
    
        //获得对话框句柄
        HWND hListViewCT = GetDlgItem(hWnd, IDC_LIST_VIEW_CT);
        HWND hListViewT = GetDlgItem(hWnd, IDC_LIST_VIEW_T);
    
        //定义项目
        LVITEM ListObj = { NULL };
        ListObj.mask = LVIF_TEXT;
        //刷新 清空
        ListView_DeleteAllItems(hListViewCT);
        ListView_DeleteAllItems(hListViewT);
        //文本缓存
        TCHAR Buffer[20] = { 0 };
        for (DWORD i = 0; i < 32; i++)
        {
            if (pstPlayerBuffer[i].x == 0 &&
                pstPlayerBuffer[i].y == 0 &&
                pstPlayerBuffer[i].z == 0)
            {
                continue;
            }
            if (pstPlayerBuffer[i].dwCT == 3)                //3=CT阵营 2=T阵营
            {
                swprintf_s(Buffer, 20, TEXT("%d"), i);
                ListObj.iSubItem = 0;
                ListObj.pszText = Buffer;
                ListView_InsertItem(hListViewCT, &ListObj);    //设置序号
    
                if (pstPlayerBuffer[i].dwHp == 1 || pstPlayerBuffer[i].dwState == 23)
                    swprintf_s(Buffer, 20, TEXT("×"));
                else
                    swprintf_s(Buffer, 20, TEXT(""));
                ListObj.iSubItem = 1;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewCT, &ListObj);    //设置死活状态
    
                swprintf_s(Buffer, 20, TEXT("%d"), pstPlayerBuffer[i].dwHp);
                ListObj.iSubItem = 2;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewCT, &ListObj);    //设置血量
    
                swprintf_s(Buffer, 20, TEXT("%.2f"), pstPlayerBuffer[i].x);
                ListObj.iSubItem = 3;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewCT, &ListObj);    //设置x
    
                swprintf_s(Buffer, 20, TEXT("%.2f"), pstPlayerBuffer[i].y);
                ListObj.iSubItem = 4;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewCT, &ListObj);    //设置y
    
                swprintf_s(Buffer, 20, TEXT("%.2f"), pstPlayerBuffer[i].z);
                ListObj.iSubItem = 5;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewCT, &ListObj);    //设置z
            }
            else
            {
                swprintf_s(Buffer, 20, TEXT("%d"), i);
                ListObj.iSubItem = 0;
                ListObj.pszText = Buffer;
                ListView_InsertItem(hListViewT, &ListObj);    //设置序号
    
                if (pstPlayerBuffer[i].dwHp == 1 || pstPlayerBuffer[i].dwState == 23)
                    swprintf_s(Buffer, 20, TEXT("×"));
                else
                    swprintf_s(Buffer, 20, TEXT(""));
                ListObj.iSubItem = 1;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewT, &ListObj);    //设置死活状态
    
                swprintf_s(Buffer, 20, TEXT("%d"), pstPlayerBuffer[i].dwHp);
                ListObj.iSubItem = 2;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewT, &ListObj);    //设置血量
    
                swprintf_s(Buffer, 20, TEXT("%.2f"), pstPlayerBuffer[i].x);
                ListObj.iSubItem = 3;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewT, &ListObj);    //设置x
    
                swprintf_s(Buffer, 20, TEXT("%.2f"), pstPlayerBuffer[i].y);
                ListObj.iSubItem = 4;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewT, &ListObj);    //设置y
    
                swprintf_s(Buffer, 20, TEXT("%.2f"), pstPlayerBuffer[i].z);
                ListObj.iSubItem = 5;
                ListObj.pszText = Buffer;
                ListView_SetItem(hListViewT, &ListObj);    //设置z
            }
        }
    }
    原创学习随笔心得,请勿转载!
  • 相关阅读:
    1137 Final Grading (25 分)
    1136 A Delayed Palindrome (20 分)
    1135 Is It A Red-Black Tree (30 分)
    1134 Vertex Cover (25 分)
    1133 Splitting A Linked List (25 分)
    1074 Reversing Linked List (25 分)
    1132 Cut Integer (20 分)
    HDU 3342 Legal or Not
    IDEA解决JSP页面无法使用EL表达式问题
    25. Bootstreap 下拉菜单
  • 原文地址:https://www.cnblogs.com/hanhandaren/p/11109600.html
Copyright © 2011-2022 走看看