MFC - 复杂控件_1

devtools/2024/9/23 20:08:34/

前言

  • 各位师傅大家好,我是qmx_07,今天给大家讲解复杂控件的相关知识点
    在这里插入图片描述

复杂控件

进度条

  • 绘图准备:
    在这里插入图片描述
  • 调整windows窗口大小、设置 Progress Control 进度条
  • 设置Button 按钮
    在这里插入图片描述
  • 添加进度条变量 m_Progress,通过按钮触发
void CMFCApplication2Dlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码const int Min = 0;const int Max = 100000;m_Progress.SetRange32(Min, Max);for (size_t i = Min; i < Max; i++){m_Progress.SetPos(i);}
}
  • SetRange32() 用于控制 进度条的最小值和最大值区间
  • SetPos()控制进度条的进度
  • 通过for循环 依次增加i,形成视觉效果
    画面演示:

在这里插入图片描述

滑块

  • 绘图准备
    在这里插入图片描述

  • 调整windows窗口大小,设置Silder Control 滑块控件
    在这里插入图片描述

  • 为滑块 设置变量:m_Slider
    在这里插入图片描述

  • 通过类向导 进入OnInitDialog

	m_Slider.SetRange(0, 100);m_Slider.SetPos(0);m_Slider.SetTicFreq(1);
  • 设置区间为0-100,当前位置为0
  • SetTicFreq()滑块的刻度频率为1,也就是增长1个单位长度
    画面演示:
    在这里插入图片描述
通过滑块 滑动 进度条进度

在这里插入图片描述

  • 添加WM_HSCROLL 消息
void CMFCApplication2Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{// TODO: 在此添加消息处理程序代码和/或调用默认值int ID = pScrollBar->GetDlgCtrlID();if (IDC_SLIDER1 == ID){int Pos = m_Slider.GetPos();m_Progress.SetPos(Pos);}CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
  • 获取滑动块的ID进行匹配,获取滑块的POS位置,让进度条和滑动块保持一致
  • GetDlgCtrlID() 获得控件ID
  • GetPos()获取位置
  • SetPos()设置位置
    画面演示:
    在这里插入图片描述

顶层菜单

在这里插入图片描述

  • 添加Menu 菜单
    在这里插入图片描述

  • 设置顶层菜单内容
    在这里插入图片描述

  • 点击对话框属性,设置Menu菜单 绑定
    画面演示:
    在这里插入图片描述

  • 显示窗口,但是还没有设置功能
    在这里插入图片描述

  • 菜单栏右键,添加事件处理程序,选择类列表对应的Dialog程序

void CMFCApplication2Dlg::On32771()
{// TODO: 在此添加命令处理程序代码MessageBox(L"Msg", L"消息提示", MB_OK);
}

画面演示:
在这里插入图片描述

右键菜单

  • 绘图准备
    在这里插入图片描述
  • 调整windows窗口大小、设置list control 控件,设置属性view为list
    在这里插入图片描述
  • 添加变量 m_list
    在这里插入图片描述
  • 选择对应的list control 对象 ,选择NM_RLICK消息(右键),添加消息处理程序
void CMFCApplication2Dlg::OnRclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码POINT pt = { 0 };GetCursorPos(&pt);//获取鼠标的位置HMENU hMenu = LoadMenu((HINSTANCE)GetWindowLongPtr(m_hWnd, GWLP_HINSTANCE), MAKEINTRESOURCE(IDR_MENU1));//加载IDR_MENU1菜单HMENU hSubMenu = GetSubMenu(hMenu, NULL);//加载子菜单TrackPopupMenu(hSubMenu, TPM_CENTERALIGN, pt.x, pt.y, 0, m_hWnd, NULL);//弹出菜单*pResult = 0;
}
  • TrackPopupMenu()显示子菜单
  • TPM_CENTERALIGN菜单在水平向上居中显示
  • 代码: 获取鼠标位置,加载菜单 子菜单资源,打印在鼠标居中的位置
    画面演示:
    在这里插入图片描述

热键消息

在这里插入图片描述

  • 进入类向导 -> 虚函数 -> 编辑 OnInitDialg
#define HOTKEY_USER_MSG 1
  • 定义消息码
    在这里插入图片描述
  • 辅助键集合
//1.窗口句柄 2. 热键消息码 3.辅助键 4. 消息RegisterHotKey(m_hWnd, HOTKEY_USER_MSG, MOD_SHIFT, VK_F1);
  • 注册 热键
    在这里插入图片描述
  • 添加热键消息 WM_HOTKEY
void CMFCApplication2Dlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{// TODO: 在此添加消息处理程序代码和/或调用默认值switch (nHotKeyId){case HOTKEY_USER_MSG:{MessageBox(L"Msg");break;}default:break;}	CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2);
}
  • 根据nHotKeyId ,判断传进来的热键消息进行匹配
    画面演示:
    在这里插入图片描述

总结

  • 介绍了 进度条,滑块,顶层菜单,右键菜单,热键消息的相关知识

http://www.ppmy.cn/devtools/116156.html

相关文章

MacOS升级Ruby版本的完整指南

前言 随着技术的快速发展&#xff0c;保持开发环境的最新状态变得至关重要。对于Ruby开发者&#xff0c;升级Ruby版本不仅能获得性能提升&#xff0c;还能享受更多的功能特性和更高的安全性。特别是在移动端开发中&#xff0c;Ruby和Ruby on Rails的应用非常广泛&#xff0c;因…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。并查集支持两种操作&#xff1a; 合并&#xff08;Union&#xff09;&#xff1a;合并两个元素所属集合&#xff08;合…

Llama 3.1 技术研究报告-2

3.3 基础设施、扩展性和效率 我们描述了⽀持Llama 3 405B⼤规模预训练的硬件和基础设施&#xff0c;并讨论了⼏项优化措施&#xff0c;这些措施提⾼了训练效率。 3.3.1 训练基础设施 Llama 1和2模型在Meta的AI研究超级集群&#xff08;Lee和Sengupta&#xff0c;2022&#x…

DNS和ICMP

DNS DNS&#xff08;Domain Name System &#xff09; DNS 是一整套从域名映射到 IP 的系统 关于DNS背景 TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 . 但是 IP 地址不 方便记忆 . 于是人们发明了一种叫主机名的东西 , 是一个字符串 , 并且…

基于SpringBoot的在线点餐系统【附源码】

​基于SpringBoot的高校社团管理系统&#xff08;源码L文说明文档&#xff09; 4 系统设计 4.1 系统概述 网上点餐系统的结构图4-1所示&#xff1a; 图4-1 系统结构 模块包括主界面&#xff0c;首页、个人中心、用户管理、美食店管理、美食分类管理、美食…

QT中的消息机制(事件机制)总结

Qt 中的消息机制&#xff08;事件机制&#xff09;是框架的核心部分之一&#xff0c;它通过事件驱动模型来处理用户交互和系统事件。Qt 的事件处理系统允许对象之间通过发送和接收消息或事件来进行通信&#xff0c;这种机制使得应用程序能以响应式的方式来处理各种输入和输出。…

【有啥问啥】深入浅出马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)算法

深入浅出马尔可夫链蒙特卡罗&#xff08;Markov Chain Monte Carlo, MCMC&#xff09;算法 0. 引言 Markov Chain Monte Carlo&#xff08;MCMC&#xff09;是一类用于从复杂分布中采样的强大算法&#xff0c;特别是在难以直接计算分布的情况下。它广泛应用于统计学、机器学习…

python爬虫初体验(一)

文章目录 1. 什么是爬虫&#xff1f;2. 为什么选择 Python&#xff1f;3. 爬虫小案例3.1 安装python3.2 安装依赖3.3 requests请求设置3.4 完整代码 4. 总结 1. 什么是爬虫&#xff1f; 爬虫&#xff08;Web Scraping&#xff09;是一种从网站自动提取数据的技术。简单来说&am…