搜索
首页数据库mysql教程【VC编程技巧】窗体?3.6以渐变效果载入对话框

平时我们经常可以看到很多应用程序启动过程很酷,什么百叶窗,渐变,各种效果,今天我们看一下如何在程序中增加这种效果。 一、示例展示: 二、示例思路: 1.首先介绍两个知识,一个是函数MoveWindow(),一个是定时器。 函数MoveWindow():改变指定窗口的位置

平时我们经常可以看到很多应用程序启动过程很酷,什么百叶窗,渐变,各种效果,今天我们看一下如何在程序中增加这种效果。

一、示例展示:

【VC编程技巧】窗体?3.6以渐变效果载入对话框


【VC编程技巧】窗体?3.6以渐变效果载入对话框


【VC编程技巧】窗体?3.6以渐变效果载入对话框


二、示例思路:


1.首先介绍两个知识,一个是函数MoveWindow(),一个是定时器。

  •  函数MoveWindow():改变指定窗口的位置和大小.对顶窗口来说,位置和大小取决于屏幕的左上角;对子窗口来    说,位置和大小取决于父窗口客户区的左上角。函数原形如下:
                BOOL MoveWindow(
                    HWND hWnd,
                    int X,
                    int Y,
                    int nWidth,
                    int nHeight,
                    BOOL bRepaint
                    );

  • 定时器:VisualC++自带的一个组件,可以按照一定的时间间隔周期性执行。具体的相关函数如下:
               SetTimer()  :设置并启动定时器
               KillTimer() :关闭定时器
               OnTimer()   :定时器消息WM_TIMER相应函数


2.主要思路是,就是在窗口启动时,设置定时器,在定时器WM_TIMER相应函数中,不断地更新窗口,直到更新到我们预期的样子。



三、示例步骤:


1.在窗口初始化函数OnInitDialog()中,初始化窗口状态,设置定时器。

// CDynamicStartDlg メッセージ ハンドラー

BOOL CDynamicStartDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// "バージョン情報..." メニューをシステム メニューに追加します。

	// IDM_ABOUTBOX は、システム コマンドの範囲内になければなりません。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、
	//  Framework は、この設定を自動的に行います。
	SetIcon(m_hIcon, TRUE);			// 大きいアイコンの設定
	SetIcon(m_hIcon, FALSE);		// 小さいアイコンの設定

	// TODO: 初期化をここに追加します。
	
	//获取对话框窗口的大小
	this->GetWindowRect(&m_dlgRect);

	//获取桌面窗口的大小
	CWnd*  pDestopWnd = GetDesktopWindow();
	pDestopWnd->GetWindowRect(&m_destopRect);

	//初始化对话框的位置和大小(位置:桌面中心,大小:0)
	MoveWindow(
		(m_destopRect.Width()-m_dlgRect.Width())/2, 
		(m_destopRect.Height()-m_dlgRect.Height())/2,
		0,
		0);

	//设置定时器,并启动(5s)
	this->SetTimer(1, 5, NULL);

	return TRUE;  // フォーカスをコントロールに設定した場合を除き、TRUE を返します。
}


2.添加WM_TIMER的相应函数OnTimer(),在OnTimer()中更新窗口的状态,达到预期的样子时,就关闭定时器。

void CDynamicStartDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: ここにメッセージ ハンドラー コードを追加するか、既定の処理を呼び出します。

	CRect dlgRect;         //保存对话框窗口当前大小
	static int offsetX = 2;//更新对话框窗口状态时的X增量
	static int offsetY = 2;//更新对话框窗口状态时的Y增量

	switch (nIDEvent)
	{
	case 1:
		//获取对话框窗口当前的大小
		this->GetWindowRect(&dlgRect);
		//更新对话框的位置和大小(利用:offsetX,offsetY)
		MoveWindow(
		(-offsetX + m_destopRect.Width() - dlgRect.Width())/2, 
		(-offsetY + m_destopRect.Height() - dlgRect.Height())/2,
		dlgRect.Width() + offsetX,
		dlgRect.Height() + offsetY);

		//X方向达到对话框窗口预期值,停止增加
		if (dlgRect.Width() >= m_dlgRect.Width())   offsetX = 0;
		//Y方向达到对话框窗口预期值,停止增加
		if (dlgRect.Height() >= m_dlgRect.Height()) offsetY = 0;
		//X,Y都达到对话框窗口预期值,关闭定时器
		if (dlgRect.Width() >= m_dlgRect.Width() && dlgRect.Height() >= m_dlgRect.Height())
		{
			this->KillTimer(nIDEvent);
		}
	default:
		break;
	}
	CDialogEx::OnTimer(nIDEvent);
}

P.S提供文章示例代码:http://download.csdn.net/detail/chenjintaoxp/7639411
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何解压一个iso文件如何解压一个iso文件Feb 19, 2024 pm 04:07 PM

ISO文件是一种常见的光盘映像文件格式,它通常用于存储光盘的全部内容,包括文件和文件系统。当我们需要访问ISO文件中的内容时,就需要将其解压。本文章将介绍解压ISO文件的几种常见方法。使用虚拟光驱解压这是最常用的解压ISO文件的方法之一。首先,我们需要安装一个虚拟光驱软件,例如DAEMONToolsLite、PowerISO等。然后,双击虚拟光驱软件图标

如何在Flight框架中进行路由设置?如何在Flight框架中进行路由设置?Jun 03, 2023 am 09:01 AM

随着Web应用程序的不断增多,Web开发框架已成为现代Web应用程序开发的重要组成部分。今天我们要介绍一个流行的Web框架-Flight,以及如何在Flight中进行路由设置。Flight是一个极简主义的Web框架,针对小型Web应用程序和JSONAPI进行了优化。它的特点是轻量级,易学易用,没有繁琐的配置文件。它提供了基本的路由功能,可以使您的代码结

如何使用 Go 语言进行游戏开发?如何使用 Go 语言进行游戏开发?Jun 09, 2023 pm 09:42 PM

随着游戏市场的不断扩张,对高效的游戏开发技术的需求也越来越高。与此同时,越来越多的游戏开发者开始使用Go语言来构建游戏,因为它具有优秀的并行处理能力和高效的内存管理,同时又有简洁明了的语法和强大的标准库。本文将介绍如何使用Go语言进行游戏开发。确定游戏类型首先,你需要确定你要开发的游戏类型,例如2D或3D游戏。这将决定你要选择哪个游戏引擎或框

如何使用PHP进行游戏开发如何使用PHP进行游戏开发Jun 23, 2023 am 10:34 AM

随着互联网的普及和移动设备的普及,游戏开发逐渐成为了热门的开发领域。PHP作为一种十分常用的编程语言,也可以用于游戏开发。在本文中,我们将介绍如何使用PHP进行游戏开发,并探讨最佳实践和技巧。理解游戏开发的基础知识在进入PHP游戏开发之前,理解游戏开发的基础知识是至关重要的。首先,你需要了解基本的编程概念,如变量、数据类型、控制结构、循环、函数等等。另外,你

提高C++编程技巧,实现嵌入式系统的多传感器数据处理功能提高C++编程技巧,实现嵌入式系统的多传感器数据处理功能Aug 25, 2023 pm 01:21 PM

提高C++编程技巧,实现嵌入式系统的多传感器数据处理功能引言:随着科技的不断发展,嵌入式系统在各个领域中得到广泛应用。在许多嵌入式系统中,多传感器数据处理是一个常见的任务。为了更好地处理这些传感器数据,提高C++编程技巧是非常重要的。本文将介绍一些实用的C++编程技巧,并结合代码示例,演示如何实现嵌入式系统的多传感器数据处理功能。一、使用合适的数据结构在处理

PHP编程技巧:如何处理登录状态验证PHP编程技巧:如何处理登录状态验证Aug 18, 2023 pm 12:13 PM

PHP编程技巧:如何处理登录状态验证在开发Web应用程序时,登录状态验证是一个非常重要的环节。用户登录后,我们需要确保用户在一段时间内的每个请求都是有效的,并且只有登录态的用户能访问特定的功能和页面。本文将介绍几种处理登录状态验证的技巧和方法,并提供相关的代码示例,帮助开发者轻松实现这一功能。使用Session验证登录状态Session是一种在服务器端存储用

探索C语言:从初学者到编程专家探索C语言:从初学者到编程专家Feb 23, 2024 pm 09:51 PM

C语言是一门广泛应用于计算机科学和软件开发领域的编程语言。无论您是初学者还是有一定编程基础的人,本篇文章将为您提供一个从零开始学习C语言的入门指南,帮助您逐步掌握基础知识和编程技巧。第一步:了解C语言基础知识在学习任何一门编程语言之前,了解其基础知识是必不可少的。首先,您需要了解C语言的历史背景和发展,了解其用途和特点。然后,学习C语言的语法规则、数据类型、

PHP与小程序的自然语言处理与关键词提取技巧PHP与小程序的自然语言处理与关键词提取技巧Jul 04, 2023 pm 08:45 PM

PHP与小程序的自然语言处理与关键词提取技巧在当今信息爆炸的时代,自然语言处理(NaturalLanguageProcessing,NLP)和关键词提取已成为信息处理领域的热门技术。PHP作为一种广泛应用于Web开发的脚本语言,以其简单易用和强大的功能备受开发者青睐。而微信小程序则成为了移动应用开发的主流选择。本文将介绍如何使用PHP与小程序实现自然语言

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器