zoukankan      html  css  js  c++  java
  • 从零构建自己的远控•界面搭建(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());                    //显示菜单

    从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。
  • 相关阅读:
    关于Jupyter Notebook默认起始目录设置无效的解决方法
    关于二叉树中度为0与度为2节点数关系证明
    LeetCode第[3]题(Java):Longest Substring Without Repeating Characters 标签:Linked List
    数据结构,物理结构,存储结构,逻辑结构的区分
    条件变量 sync.Cond
    defer 的常用场景
    switch...case... 语句中的类型转换
    golang 切片和数组在for...range中的区别
    golang 并发顺序输出数字
    Golang 中哪些值是不可以寻址的
  • 原文地址:https://www.cnblogs.com/feizianquan/p/15150437.html
Copyright © 2011-2022 走看看