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

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

在这里插入图片描述





菜单资源的使用

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

WM_COMMAND

cpp 复制代码
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;
		
	}
}

上下文菜单

显示上下文菜单

cpp 复制代码
BOOL TrackPopupMenu{
	HMENU hMenu,//菜单句柄
	UINT uFlags, //显示方式
	int x; //水平位置,屏幕坐标系
	int y,//垂直位置,屏幕坐标系
	int nReserved, //保留,必须0
	HWND 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,是当前鼠标的热点
  • 加载资源
cpp 复制代码
HCURSOR LoadCursor(
	HINSTANCE hInstance,
	LPCTSTR lpCursorName
);
  • 设置资源

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

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

开发项的讲解

cpp 复制代码
#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)

cpp 复制代码
#include<QPushButton>
QT += widgets

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

cpp 复制代码
QPushButton* btn = new QPushButton;

步骤3:显示按钮

cpp 复制代码
btn->show();
btn->setParent(this);

按钮的属性设置

cpp 复制代码
btn->setText("第一个按钮");
btn->move(100,100);
btn->setFixedSize(400,400);
相关推荐
是上好佳佳佳呀2 分钟前
【机器学习|DAY06】集成学习(Ensemble Learning)笔记
笔记·机器学习·集成学习
kdxiaojie2 分钟前
Linux 驱动研究 —— V4L2 (14)
linux·运维·笔记·学习
承渊政道33 分钟前
Linux系统学习【掌握Ext系列⽂件系统的相关内容】
linux·运维·学习·文件系统·存储结构·inode
未知违规用户37 分钟前
大模型项目: 学习FastAPI 服务器开发
服务器·人工智能·python·学习·fastapi
幸福在路上wellbeing43 分钟前
AI 智能体开发 · Day 3 详细学习手册
人工智能·学习·oracle
MartinYeung512 小时前
[论文学习]自主性如何重塑个性化对LLM智能体隐私关切与信任的影响
人工智能·学习
FellAveal13 小时前
【Go语言入门学习笔记】Part18.工作池与WaitGroup(也即协程池)
笔记·学习·golang
xqqxqxxq13 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
菜鸟‍14 小时前
【论文学习】MICCAI 2024 || SGSeg:通过自引导机制实现胸部X光片语言引导分割的无文本推理
人工智能·深度学习·学习
龙仔72514 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓