• 从零构建自己的远控•界面搭建(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<LPNMITEMACTIVATE>(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());                    //显示菜单

    从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。
  • 相关阅读:
    用索引提高SQL Server性能
    常用代码生成器
    ASP.NET动态生成html页面 (转载)
    C#基础知识
    DrGraph软件升级:工程优化1
    DrGraph软件升级:Quick Access Toolbar
    高级面向对象程序与设计的概念
    DrGraph软件升级:BCB6转2010
    DrGraph软件升级:皮肤
    命名空间
  • 原文地址:https://www.cnblogs.com/feizianquan/p/15150437.html
Copyright © 2020-2023  润新知