从零构建自己的远控•界面搭建(3)


在加入的onsize函数每次修改都重新响应数据 做到自适应

void CRedmanControlDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialogEx::OnSize(nType, cx, cy);

    // TODO: 在此处添加消息处理程序代码
    if (mCListHead.m_hWnd != NULL)
    {
        CRect rc;
        rc.left = 1;       //列表的左坐标
        rc.top = 5;       //列表的上坐标
        rc.right = cx - 1;  //列表的右坐标
        rc.bottom = cy / 3;  //列表的下坐标
        mCListHead.MoveWindow(rc);
    }
    if (CListServer.m_hWnd != NULL)
    {
        for (size_t i = 0; i < 5; i++)
        {
            CListServer.SetColumnWidth(i, (cx/6));
        }
        

        CRect rc;
        rc.left = 1;        //列表的左坐标
        rc.top = cy/3;    //列表的上坐标
        rc.right = cx - 1;    //列表的右坐标
        rc.bottom = (cy / 3)*2;  //列表的下坐标
        CListServer.MoveWindow(rc);
    }
    if (CListLog.m_hWnd != NULL)
    {
        for (size_t i = 0; i < 2; i++)
        {
            CListLog.SetColumnWidth(i, (cx / 3));
        }
        CRect rc;
        rc.left = 1;        //列表的左坐标
        rc.top = (cy / 3) * 2;    //列表的上坐标
        rc.right = cx - 1;    //列表的右坐标
        rc.bottom = cy - 6;  //列表的下坐标
        CListLog.MoveWindow(rc);
    }
}

在list控件上添加菜单

 接着增加list列表的右键消息函数

 在控件内 鼠标右键函数

void CRedmanControlDlg::OnRclickServer(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    CMenu    popup;
    popup.LoadMenu(IDR_MENUSERVER);//载入菜单
    CMenu* pM = popup.GetSubMenu(0);//获取菜单句柄
    CPoint    p;
    GetCursorPos(&p);    //获取屏幕光标位置
    if (CListServer.GetSelectedCount() == 0)       //如果没有选中
    {
        int    count = pM->GetMenuItemCount();//获取菜单条数
        for (int i = 0; i < count; i++)
        {
            pM->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);          //菜单全部变灰
        }

    }
    pM->TrackPopupMenu(TPM_LEFTALIGN, p.x, p.y, this);//弹出菜单
    *pResult = 0;
}

 接着创建菜单里面的响应函数

 接着添加头部菜单

//初始化菜单
    HMENU hmenu;//LPCWSTR
    hmenu = LoadMenu(NULL, (LPCWSTR)(IDR_MENUTOP));  //载入菜单资源
    ::SetMenu(this->GetSafeHwnd(), hmenu);                  //为窗口设置菜单
    ::DrawMenuBar(this->GetSafeHwnd());                    //显示菜单

相关