MFC上下文菜单与定时器学习笔记

本博文简单介绍了上下文菜单以及定时器的知识内容,作为笔记发表在csdn上面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

菜单资源的使用

  • 添加菜单资源
  • 加载菜单资源:
    • 注册窗口类时设置菜单
    • 创建窗口传参设置菜单
    • 在主窗口WM_CREATE消息中利用SetMenu函数设置
  • 加载菜单资源
HMENU LoadMenu{HINSTANCE hInstance;LPCTSTR lpMenuName;
}

WM_COMMAND

在这里插入图片描述

void OnCommand(HWND hWnd,WPARAM wParam){switch(LOWORD(wParam)){case ID_NEW:MessageBox(hWnd,"新建被点击","Infor",MB_OK);break;case ID_EXIT:MessageBox(hWnd,"推出被点击","Infor",MB_OK);break;}
}

上下文菜单

显示上下文菜单

BOOL TrackPopupMenu{HMENU hMenu,//菜单句柄UINT uFlags, //显示方式int x; //水平位置,屏幕坐标系int y,//垂直位置,屏幕坐标系int nReserved, //保留,必须0HWND hWnd,//处理菜单消息的窗口句柄CONST RECT* prcRect//NULL ,忽略};TrackPopupMenu是阻塞函数

WM_RBUTTONUP

鼠标右键弹起消息为窗口坐标系坐标,要使用需将其转换成屏幕坐标系坐标ClientToScreen

WM_CONTEXTMENU

  • wParam:右键点击窗口句柄
  • lParam:LOWORD X坐标 ,屏幕坐标系 HIWORD Y坐标系,屏幕坐标系

WM_CONTEXTMENU消息是在WM_RBUTTONUP消息之后产生。

图标资源

  • 添加资源:注意图标的大小,一个图标文件中,可以有多个不同大小的图标
  • 加载:HICON LoadIcon(HINSTANCE hInstance,LPCSTR lpIconName);成功返回句柄
  • 设置:注册窗口类

光标资源

  • 添加光标的资源:光标的大小默认是32*32像素,每个光标有HotSpot,是当前鼠标的热点
  • 加载资源
HCURSOR LoadCursor(HINSTANCE hInstance,LPCTSTR lpCursorName
);
  • 设置资源

在注册窗口时,设置光标,使用SetCursor设置光标

HCURSR SetCursor(HCURSOR hCursor);
  • WM_SETCURSOR 消息参数
    • wPARAM 当前使用的光标句柄
    • lPARAM --LOWORD 当前区域的代码(hit-Test Code) HITCLIENT/HTCAPTION HIWORD-当前鼠标消息ID

开发项的讲解

#include"widget.h"
#include<QApplication>
int main(int argc,char * argv[]){QApplication a(argc,argv);//应用程序类(整个后台管理的命脉,处理应用程序的初始化和结束,事件处理调度,注意不管有多少个窗口,一个QApplication类就可)Widget w;//示例化对象,调用构造函数w.show();//显示图像界面return a.exec();//主事件循环,在exec函数中,qt函数并处理用户和系统的事件并将它们传递给适当的窗口部件
}

代码书写在哪里

.pro:用于生成可执行文件
main.cpp 主函数
widget.cpp 类的函数
一般情况,窗口的属性和添加控件的操作都会在类的构造函数中书写
优点:可以让主程序中多余的代码,程序阅读也方便

创建按钮

步骤1:包含头文件(.cpp)及模块(.pro)

#include<QPushButton>
QT += widgets

步骤2:调用类的构造函数创建按钮

QPushButton* btn = new QPushButton;

步骤3:显示按钮

btn->show();
btn->setParent(this);

按钮的属性设置

btn->setText("第一个按钮");
btn->move(100,100);
btn->setFixedSize(400,400);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25997.shtml

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

相关文章

Python编写和管理装饰器库之wrapt使用详解

概要 在 Python 编程中,装饰器(decorator)是一个非常强大的工具,可以在不修改原函数代码的情况下,增强函数的功能。然而,编写装饰器有时会遇到一些复杂的问题,比如保持被装饰函数的元信息、正确传递参数等。wrapt 库提供了一组工具,帮助开发者更容易地编写和管理装饰器…

深圳比创达电子|EMI电磁干扰行业:挑战到突破,电子产业新未来

随着电子技术的飞速发展&#xff0c;电磁干扰&#xff08;EMI&#xff09;问题日益凸显&#xff0c;成为影响电子设备性能和稳定性的重要因素。EMI电磁干扰行业作为解决这一问题的关键领域&#xff0c;正面临着前所未有的机遇与挑战。 一、引言&#xff1a;EMI电磁干扰行业的崛…

分布式事务AP控制方案(下)

分布式事务控制方案 本篇文章给出一种要求高可用性&#xff08;AP思想&#xff09;的分布式事务控制方案 上篇回顾&#xff1a;点我查看 分布式事务控制方案1、前景回顾2、数据库和缓存的操作3、分布式文件系统1&#xff09;页面静态化2&#xff09;远程调用3&#xff09;调用…

语法、语义、语用与向量化

一、字符、向量和语义 在计算机科学和自然语言处理中&#xff0c;字符、向量和语义是三个重要的概念&#xff0c;它们之间存在着密切的关系。 字符是构成文本的基本单位&#xff0c;例如字母、数字、标点符号等。在计算机中&#xff0c;字符通常用二进制编码表示&#xff0c;例…

10秒钟docker 安装Acunetix

1、拉取镜像&#xff1a; 2、查看镜像&#xff1a; [rootdns-server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/hiepnv/acunetix latest f8415551b8f4 2 months ago 1.98GB 3、运行镜像&#xff1a; …

优思学院|用ChatGPT快速完成数据分析图表【柏累托图法】

数据分析是很多行业的人不可少的一部分&#xff0c;尤其是质量工程师更是日常的工作。然而&#xff0c;随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;将逐渐承担起数据计算的工作&#xff0c;这意味着未来的质量工程师需要具备的不仅仅是计算能力&#xff0c;…

徐州服务器租用:大带宽的重要性

当企业用户选择服务器租用的同时&#xff0c;还需要为服务器选择带宽、内存等硬件设备&#xff0c;大多数的企业在进行服务器租用时会选择大带宽&#xff0c;用户选择大带宽的原因有哪些呢&#xff1f; 在单位时间内可以在线路上传送的数据量被称为带宽&#xff0c;带宽越大&am…

WEB前端几点上下班:深入探索工作时间安排的奥秘与挑战

WEB前端几点上下班&#xff1a;深入探索工作时间安排的奥秘与挑战 在数字化时代的浪潮下&#xff0c;WEB前端作为连接用户与数字世界的桥梁&#xff0c;扮演着至关重要的角色。然而&#xff0c;关于WEB前端工程师的上下班时间&#xff0c;却常常引发人们的困惑与好奇。今天&am…

c,c++,go语言字符串的演进

#include <stdio.h> #include <string.h> int main() {char str[] {a,b,c,\0,d,d,d};printf("string:[%s], len:%d \n", str, strlen(str) );return 0; } string:[abc], len:3 c语言只有数组的概念&#xff0c;数组本身没有长度的概念&#xff0c;需…

ISO 19115-3:2023 基本概念的 XML模式实现

前言 ISO(国际标准化组织)是由各国标准化机构(ISO 成员机构)组成的全球性联合会。制定国际标准的工作通常由 ISO 技术委员会完成。对某一技术委员会所关注的主题感兴趣的每个成员机构都有权在该委员会中派代表。与 ISO 联络的国际组织、政府和非政府组织也参与工作。ISO 与…

运营商大模型进化之路:策略分野与AI未来的璀璨展望

运营商大模型的进化路线“分野”与AI大模型的璀璨前景 随着人工智能技术的飞速发展&#xff0c;AI大模型已成为推动科技进步和产业变革的重要力量。在这个浪潮中&#xff0c;运营商作为通信行业的巨头&#xff0c;也纷纷投入大模型的研发与应用&#xff0c;探索出各自独特的进化…

Mid-journey Prompts -core

以“-core”结尾的描述符。这些提示往往会产生强烈的影响&#xff0c;因为它们涵盖了整个风格、动作和美学。 提示词&#xff1a;Dreamcore [主题] Dreamcore 通过尝试使用鲜艳的色彩、奇怪的形状和不合时宜的物体来捕捉做梦的感觉&#xff0c;从而探索超现实。Midjourney 还喜…

性能测试2【搬代码】

1.性能测试脚本完善以及增强 2.jmeter插件安装以及监控使用 3.性能压测场景设置&#xff08;基准、负载、压力、稳定性&#xff09; 4. 无界面压测场景详解 一、性能测试脚本完善以及增强 使用控制器的目的是使我们的脚本更加接近真实的场景 1.逻辑控制器: 【事务控制器】&…

MySQL存储引擎详述:InnoDB为何胜出?

MySQL作为当前最流行的开源关系型数据库之一,其强大的功能和良好的性能使其广泛应用于各种规模的应用系统中。其中,存储引擎的设计理念是MySQL数据库灵活高效的关键所在。 一、什么是存储引擎 存储引擎是MySQL架构的重要组成部分,负责MySQL中数据的存储和提供了视图,存储过程等…

七天进阶elasticsearch[Four]

依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>3.3.0</version></dependency>如果我们定义一个存储库接口来扩展 Spring Data El…

idea鼠标滚轮滚动放大缩小字体

在idea中的【file】->【settings】菜单&#xff0c;弹出settings窗口&#xff0c;点击窗口中的【Editor】->【General】&#xff0c;在右侧窗口中&#xff0c;选中【Change font size with CtrlMouse Wheel in All editors】即可。

「动态规划」如何求粉刷房子的最少花费?

LCR 091. 粉刷房子https://leetcode.cn/problems/JEj789/description/ 假如有一排房子&#xff0c;共n个&#xff0c;每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种&#xff0c;你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然&#xff0c;因为市…

通过 CartPole 游戏详细说明 PPO 优化过程

CartPole 介绍 在一个光滑的轨道上有个推车&#xff0c;杆子垂直微置在推车上&#xff0c;随时有倒的风险。系统每次对推车施加向左或者向右的力&#xff0c;但我们的目标是让杆子保持直立。杆子保持直立的每个时间单位都会获得 1 的奖励。但是当杆子与垂直方向成 15 度以上的…

springboot与flowable(1):介绍、Flowable-ui使用

一、工作流引擎使用场景 工作流在企业管理系统中是高频使用的功能&#xff0c;一个最常见的例子是请假加班申请与审批的过程。事实上&#xff0c;工作流引擎能支持的业务场景远远不止单据审批&#xff0c;几乎所有涉及到业务流转、多人按流程完成工作的场景背后都可以通过工作流…

任务4.8.1 利用Spark SQL实现词频统计

实战&#xff1a;利用Spark SQL实现词频统计 目标 使用Apache Spark的Spark SQL模块&#xff0c;实现一个词频统计程序。 环境准备 本地文件准备 在本地/home目录下创建words.txt文件。 HDFS文件准备 创建HDFS目录/wordcount/input。将words.txt文件上传到HDFS的/wordcount…