孙鑫VC++深入详解:Lesson9 Part3---模拟动画图标

MFC中获取各种类指针  1、获取应用程序指针  CMyApp* pApp=(CMyApp*)AfxGetApp();2、获取主框架指针  CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针  CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);  或者  CMainFrame* pMainFrame = (CM 阅读详情


让应用程序标题栏的图标按照时间轮换

思路:

1) SetClassLong函数在窗口建成后调用图标文件(事先准备好3个图标文件),在OnCreate中处理

2) 在OnCreate中放置一个SetTimer

3)处理WM_TIIMER消息即OnTime函数


知识点:

用三种方法获取应用程序实例hInstance句柄

1) AfxGetInstanceHandle()

2)theApp.m_hInstance

3)AfxGetApp()->m_hInstance

资源ID转化为资源标识字符串 MAKEINTRESOURCE,这是个宏,WIN32编程中常用.

注意:theApp是在类CStyleApp文件中定义的全局变量CStyleApp theApp,在CMainFrame中要用它,必须先申明

theApp来自外部,即: extern CStyleApp theApp


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	
//------先加载图标到数字m_hIcon[], 用SetClassLong()调用,修改标题图标,放置一个定时器

	m_hIcon[0] =LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));

	extern CStyleApp theApp; // 要用theApp这个全局的应用程序对象,需要申明下它是CStyleApp中定义过的.
	m_hIcon[1] =LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON2));
	
	m_hIcon[2] =LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3));

    SetClassLong(this->m_hWnd,GCL_HICON,(LONG)m_hIcon[0]);//把m_hIcon[0]设置为窗口创建后的默认图标

	SetTimer(1,1000,NULL); //设置一个定时器,定时产生WM_TIMER消息
   

	return 0;
}


// 响应定时器SetTimer(1,1000,NULL)的WM_TIMER消息函数
void CMainFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default

	static int index =1;
	SetClassLong(this->m_hWnd,GCL_HICON,(LONG)m_hIcon[index]);	
	index++;if(index==3)index=0; // 或者取3的取模运算:index=++index%3;

	CFrameWnd::OnTimer(nIDEvent);
}








VC++实现动画图标 VC++开发例程,实现多姿多彩的动画图标 立即下载

相关推荐

手把手教你用RSoft BPM仿真一个1x2光分束器:从参数设置到结果分析全记录

本文详细介绍了使用RSoft BPM模块设计和仿真1×2光分束器的完整流程,包括参数设置、结构建模、仿真配置和结果分析。通过实战指南,帮助读者掌握光波导器件的仿真技术,实现50:50功率分配的设计目标,适用于光通信和集成光学领域的研究与应用。

weixin_30545945的博客 545

MFC获取当前应用程序实例句柄的三种方法

MFC获取当前应用程序实例句柄的三种方法 AfxGetInstanceHandle() theApp.m_hInstance AfxGetApp()->m_hInstance theApp 等价于 AfxGetApp()

qq_25231249的博客 1100

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 619

得到实例句柄的方法

得到应用程序当前实例句柄 方法1: 用函数AfxGetInstanceHandle() 它的返回值为当前应用程序的一个实例句柄, 方法2: 在单文档应用程序中都有一个CWinApp这个类,它的类成员有一个数据成员 m_hInstance 它标识了应用程序当前的一个实例句柄, 所以说如果可以获取到CWinApp的一个对象,我们就可以用到它的数据成员。 这个类中已经定义了一个全局的对象

TwigLiu的专栏 942

轴承故障诊断领域的论文到底有多水

这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。

weixin_50642818的博客 3053

大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linuxschedule()函数的原理和调用的时机 schedule()函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令) 多级反馈队列调度 时间片轮转 使用nice命令 聊内存分配,进程内存分配,段页式存

大模型大数据攻城狮的专栏 4172

MFC DLL中加载图标

图标是MFC工程中资源的一种,应用程序中的图标资源可以直接使用LoadImage来获得,在添加图标资源到工程中,然后使用下面语句就可以获得HICON。   1// AfxGetApp()->m_hInstance用来获得应用程序实例的句柄// MAKEINTRESOURCE用来将一个资源的ID转化成字符串// IMAGE_ICON为资源的类型// 17, 14为图片大小HICON hIcon =

autumn20080101的专栏 1167

PX4从放弃到精通(十一):混控及PWM输出

文章目录前言一、混控脚本二、使用步骤1.引入库2.读入数据总结 前言 一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956 更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy 分享知识,传递正能量,如有疏漏或不当之处,恳请指出. 一、混控脚本 混控脚本定义了不同 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pand

超维空间科技的博客 1万+

慎用AfxGetApp()->GetMainWnd()->m_hWnd

刚刚查了一个问题。 问题描述:我提供了一个库给上层使用,上层的应用程序运行时出现崩溃。 问题解决:搭环境,用VC调试查问题。 原来是如下的问题,取主窗口句柄使用了  AfxGetApp()->GetMainWnd()->m_hWnd  但程序运行时AfxGetApp()会返回 NULL值,所以程序崩溃。代码改为  CWinApp* pWinApp = AfxGe

marchbirdcode的专栏 3405

基于高光谱的物质反演与分类 — 技术文章(原理详解 + 深度代码实现)

高光谱遥感 / 近场光谱采集产生逐像素上百波段的光谱曲线,是物质识别与定量反演(abundance / composition estimation)和语义分类(landcover / material class)的一把利器。本文第一部分对常用模型(线性混合模型、非线性辐射传输、稀疏反演、降维与特征选择、分类器/神经网络)进行数学推导与理论分析;第二部分给出两套完整实现:A. 基于 LMM 的约束最小二乘 / 稀疏反演流水线(含端到端评估);

VectorShift的博客 221

基于潜在空间分数匹配的混合型表格数据合成方法

然而,在我们的模型中,β 预计会更小,因为我们不需要嵌入的分布精确地遵循标准高斯分布,因为我们还有一个额外的扩散模型。受 Transformer 在表格数据分类/回归任务中取得成功的启发,我们首先为每一列学习一个独特的标记器,然后将标记(列)级表示输入到 Transformer 中,以捕捉列之间错综复杂的关系。在第 4 节中,我们证明了通过这种设计,TABSYN 可以在不到 20 次函数评估(NFE)的情况下生成高质量的合成表格数据,这比其他基于扩散的表格数据合成方法要少得多。是标记器的可学习参数。

步子哥的博客 854

获得主窗口句柄AfxGetApp()->m_pMainWnd

AfxGetApp()->m_pMainWnd 1: AfxGetApp()->m_pMainWnd这个东西就是主窗口的指针。即CMainFrame类的对象指针。很多东西的创建和它有关。以及可以用它来获取视图和文档指针。也可以使用AfxGetMainWnd();或 AfxGetApp()->GetMainWnd() 这个函数在程序的任何地方都可以调用的原因是它是一个全局函数,函数返回值是C

riscben的博客 4045

执行HDevelop项目

这一节,我们讲述的是如何用HDevEngine加载和执行一个HDevelop项目。代码部分来源于示例程序exec_program(源文件exec_program.cpp),检测塑料零件边界上的毛刺。1.Step 1:初始化首先,我们包含HALCON/C++和HDevEngine头文件以及命名空间。注意到在这个示例程序中,HDevEngine头文件已经包含在my_hdevoperatorimpl中,所

Z's Palace 2997

探索MFC全局函数-AfxGetApp()

MFC做到了从C/SDK开发Win32程序到利用OOP思想开发Win32程序的过渡,它的封装完美体现的C++的三大特性,提高了Win32程序的开发效率,但它的封装也使得本来清晰的脉络,变得晦涩起来。 今天我们探究被微软冠以Afx前缀的全局函数AfxGetApp(),这个函数作用是获取当前应用进程的指针,确切的说是获取由CWinApp派生出类的对象,相信懂MFC的人都熟知,但作为全局函数的它是如何

老骥伏枥,志在千里 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AfxGetApp()->m_pMainWnd和AfxGetMainWnd() 的区别

<br />在多线程程序中<br />AfxGetApp()->m_pMainWnd 应用程序主线程的句柄,在一个多线程应用程序中是唯一的<br />AfxGetMainWnd() 调用线程的句柄,暨当前语句所在线程的句柄,不唯一。

houlaizhe221的专栏 1514

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AfxGetApp()->m_pMainWnd

<br />      AfxGetApp()->m_pMainWnd这个东西就是主窗口的指针。即CMainFrame类的对象指针。很多东西的创建和它有关。以及可以用它来获取视图和文档指针。也可以使用AfxGetMainWnd();或 AfxGetApp()->GetMainWnd()   <br />这个函数在程序的任何地方都可以调用的原因是它是一个全局函数,函数返回值是CWinApp   *   。它将返回程序在进入WinMain()函数之前,系统就为程序创建好的一个CWinApp全局实例theApp,

强子的专栏 1078

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

获得应用程序当前实例句柄

应用程序的实例句柄保存在CWinAppIm_hInstance 中 1、AfxGetInstanceHandle() 这个函数使你能够获得当前应用程序的实例句柄。 AfxGetInstanceHandle总是返回代表你的可执行文件(.EXE)的HINSTANCE值,除非它从与MFC的USRDLL版本连接的DLL内调用的。在这种情况下,它返回的是DLL的HINSTANCE值。

fengkuangfj的专栏 4136

GetModuleHandle和AfxGetInstanceHandle和CWinApp->m_hInstance的区别

               GetModuleHandle和AfxGetInstanceHandle和CWinApp->m_hInstance的区别在工作中遇到一个问题,就是在一个DLL中想改变这个DLL的窗口的ICON,于是写了如下的代码:    HICON    hicon=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON1)

tangaowen的专栏 5396

MFC this指针,m_hInstance, m_hWnd

<br />this 指针:<br />this表示当前类的实例的指针,也就是说你 this 在哪个类里,这里 this 就指向哪个类。例如当 this 写在 CTreeView 类的函数里, this 指针就指向 CTreeView 的实例;<br />m_hInstance:<br />句柄是一个标识符,是拿来标识对象或者项目的,m_hInstance是应用程序的实例句柄,可以调用 AfxGetInstancdHandle获得句柄.<br />Example: HANDLE hInstance=AfxG

Betty_Ting的专栏 8926

Windows API 函数 LoadIcon的使用

LoadIcon的使用  函数原型:  HICON WINAPI LoadIcon (HINSTANCEhInstance,LPCTSTRlpIconName ); 参数 1.hInstance类型:HINSTANCE 图标资源所在模块的实例句柄。如果是标准图标,此参数必须为NULL。 2.lpIconName类型:LPCTSTR 图标资源名或资源标识符,资源标识符由16位组成,在低16位,高16位为0。宏MAKEINTRESOURCE可以将资源标识符强制转换成参数的资源名类型。如...

zxf347085420的博客 5126

AfxGetApp()->GetMainWnd()和AfxGetMainWnd()的区别

1. 获取的是主线程的窗口句柄。 2. AfxGetMainWnd()获取的是所在线程的窗口句柄。 在单线程下他们获得是同一个窗口,多线程下则不是。

technologyleader的专栏 584

孙鑫VC++第9章定制应用程序外观

九、定制应用程序外观   1.      如果希望在应用程序窗口创建之前修改它的外观和大小,就应该在CMainFrame类的PreCreateWindow成员函数中进行;(只需要修改CREATETRUCT结构体中的相关成员变量就行) //修改窗口大小 Cs.cx = 300; Cs.cx =200; //修改程序窗口风格 //如果想让窗口显示自己的标题,只需要将窗口的FWS_ADDT

C__Monkey的专栏 1445
上一篇: 孙鑫VC++深入详解:Lesson9 Part2---修改窗口光标,图表,背景
下一篇: 孙鑫VC++深入详解:Lesson9 Part4---工具栏编程
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值