MFC - 复杂控件_1

news2024/9/23 23:19:58

前言

  • 各位师傅大家好,我是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.coloradmin.cn/o/2158732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JAVA+SpringBoot+Vue的景区民宿预约系统

基于JAVASpringBootVue的景区民宿预约系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

Django 数据库配置以及字段设置详解

配置PostGre 要在 Django 中配置连接 PostgreSQL 数据库&#xff0c;并创建一个包含“使用人”和“车牌号”等字段的 Car 表 1. 配置 PostgreSQL 数据库连接 首先&#xff0c;在 Django 项目的 settings.py 中配置 PostgreSQL 连接。 修改 settings.py 文件&#xff1a; …

C++ set 和 map学习

一、set(multiset)的基本知识和使用 set也是一种我们直接可以使用的容器&#xff0c;使用应该包含 #include <set> 这个头文件。此处暂且不讨论其底层&#xff0c;只探讨set如何使用即可。 我们看到&#xff0c;set 的模板参数有三个&#xff0c;第一个就是其存储的数据…

Python学习——【4.6】数据容器:dict 字典、映射

文章目录 【4.6】数据容器&#xff1a;dict 字典、映射一、字典的定义二、字典的常用操作三、字典的遍历四、字典的特点 【4.6】数据容器&#xff1a;dict 字典、映射 一、字典的定义 为什么使用字典 以生活中的新华字典举例。它的功能是&#xff0c;让我们通过【字】&#x…

Linux基础4-进程2(Linux中的进程状态,R,S,D,T,t,Z,X,僵尸进程,孤儿进程)

上篇文章&#xff1a;Linux基础4-进程1&#xff08;操作系统&#xff0c;进程介绍&#xff0c;Linux进程相关命令&#xff0c;getpid&#xff0c;fork&#xff09;-CSDN博客 本章重点&#xff1a; 进程状态相关知识 目录 1. 进程常见的状态 2.普遍的操作系统理解进程状态 3.…

c++263抽象类在继承中的应用

#include<iostream> using namespace std; //计算程序员工资 //1.要求能计算出junior_programmmer mid-programer adv-programmer的工资 //2.要求利用抽象类统一界面 方便程序的扩展 ex&#xff1a;新增计算架构师architect的工资class programmer { public:virtual void…

CTFHub技能树-SQL注入-Cookie注入

使用bp发现cookie的注入点 id1&#xff0c;发现为数字型 首先使用联合查询 id 1 order by 2 id 1 order by 3发现2的时候有回显&#xff0c;而3的时候无回显 Cookie: id-1 union select database(),user() 后面开始库->表->列->数据 Cookie: id-1 union select 1…

WebLogic文件任意上传漏洞CVE-2018-2894

1.环境搭建 cd vulhub-master/weblogic/CVE-2018-2894 docker-compose up -d 2.获取环境后台密码 docker-compose logs | grep password 3.开启web服务测试 设置web服务测试开启:域结构->base-domain->高级 ->启动Web服务测试页 4.修改访问目录 先进入/ws_utc/co…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

每日一练:对称二叉树

101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,n…

对象【JavaScript】

在JavaScript中&#xff0c;对象是一种复合数据类型&#xff0c;它使用花括号 {} 包裹一组键值对。每个键&#xff08;属性名&#xff09;后面跟着一个冒号 : 和对应的值。键通常是字符串&#xff08;或符号&#xff09;&#xff0c;而值可以是任意数据类型。 1. 对象字面…

数据脱敏-快速使用

1.数据脱敏定义 数据脱敏百度百科中是这样定义的&#xff1a; 数据脱敏&#xff0c;指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。 因为在真正的生产环境中,很多数据是不能直接返回,但是我们工作的时候可能经常性的需要返回一些用户信…

公司将被千万美金收购,工程师却误删数据库 —— 没 有 备 份!!!

前些天&#xff0c;Retention 和 RB2B 的 CEO&#xff0c;Adam Robinson&#xff0c;在领英&#xff08;LinkedIn&#xff09;发帖讲了一个恐怖故事。 2021 年 3 月&#xff0c;在他第一个创业公司即将以一千万美金被收购的两周前&#xff0c;他们的一位工程师不小心删除了整个…

M9410A VXT PXI 矢量收发信机,300/600/1200MHz带宽

M9410A PXI 矢量收发信机 -300/600/1200MHz带宽- M9410A VXT PXI 矢量收发信机&#xff0c;300/600/1200MHz带宽支持 5G 的 PXI 矢量收发信机&#xff08;VXT&#xff09;是一个 2 插槽模块&#xff0c;具有 1.2 GHz 的瞬时带宽 主要特点 Keysight M9410A VXT PXIe 矢量收发…

SpringBoot+Vue技术框架开发的ADR智能监测系统源码,Java语言的药品不良反应智能监测系统源代码

系统概述&#xff1a; 药品不良反应是指合格药品在正常用法用量下出现的与用药目的无关的有害反应。药品不良反应智能监测系统是一种用于监测和收集药品在使用过程中发生的不良反应的系统。它基于医院临床数据中心&#xff0c;运用信息技术实现药品不良反应的智能监测、报告管…

46.哀家要长脑子了!

1.435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;动态规划 实际上本质就是找最长的无重叠子序列&#xff0c;那么我们可以遍历这个区间的集合&#xff0c;只要前一个区间的右端点是小于等于后一个区间的左端点&#xff0c;那么这两个区间就不是重…

C:内存函数

目录 前言&#xff1a; 一、memcpy 函数的使用及实现 1、memcpy函数的介绍 1.1 memcpy函数参数解读 2、memcpy函数的使用 3、memcpy函数的模拟实现 二、memmove函数的使用及模拟 1、memmove函数的使用 2、memmove函数的模拟实现 三、memset 函数的使用 1、memset函数的…

mybatis 配置文件完成增删改查(五) :单条件 动态sql查询,相当于switch

文章目录 单条件 动态sql查询写测试方法 疑问总结 单条件 动态sql查询 <select id"selectByConditionBySingle" resultMap"brandResultMap">.select *from tb_brandwhere<choose>/*相当于switch*/<when test"status ! null">…

基于Vision-Board的智能应急环境监测控制小车

目录 1 项目概述 1.1 项目背景 1.2 系统功能介绍 1.2.1 下位机智能小车控制系统 1.2.2 微信小程序App 1.2.3 PC上位机App 1.3 框图介绍 1.3.1 主控板卡 1.3.2 小车控制模块 1.3.3 通信模块 1.4 系统使用的技术要点 2 系统硬件设计 2.1 Version board主控板块系统结…

matlab恢复默认窗口布局

1.点击主页&#xff0c;选择布局 2.选择默认&#xff0c;即可恢复到默认的窗口布局