QQ登录

只需一步,快速开始

36上位机VC MFC实现程序动画显示

[ 复制链接 ]

36上位机VC MFC实现程序动画显示

36上位机VC MFC实现程序动画显示

36上位机VC MFC实现程序动画显示



功能展示

MFC默认新建的上位机程序,窗体的显示是在一瞬间完成的,如果使我们自己设计的程序在显示时个性化地动画显示,会更加吸引用户增加程序的趣味性,我们当前例程就来实现这一功能,效果如图


要点提示

要实现动画显示窗口的效果我们可以使用函数MoveWindow函数,也可以使用SetWindowPos 函数,两个函数都x,y,cx四个参数作为窗口要设置的位置和大小,我们只要更改这四个参数便可实现动画效果;我们这里以第二函数来实现
BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );
x,y,cx,四个参数为窗口所以设置的位置和大小;
pWndInsertAfter为指定窗口的Z顺序,我们就可以通过设置此参数为&wndTopMost,实现窗口最前显示效果;
nFlags窗口尺寸和定位的标志
实现功能
1.新建基于对话框的应用程序

2.在主窗口中选择性添加虚函数PreTranslateMessage()窗口不可移动功能
  1. BOOL CGkbc8Dlg::PreTranslateMessage(MSG* pMsg)
  2. {
  3.         // TODO: Add your specialized code here and/or call the base class
  4.         if(pMsg->message==WM_NCLBUTTONDOWN)
  5.         {
  6.                 pMsg->message=WM_LBUTTONDOWN;
  7.         }
  8.         
  9.         return CDialog::PreTranslateMessage(pMsg);
  10. }
复制代码
3.添加变量  INTm_nDx;INT m_nDy;INT m_nWidth;INT m_nHeight;

在对话框初始化函数OnInitDialog()里进行程序初化
  1. CRect rect;
  2.         GetWindowRect(rect);
  3.         m_nDx =10; //宽的增量
  4.         m_nDy = 10;//高的增量
  5.         m_nWidth = rect.Width();//窗口的正常宽
  6.         m_nHeight = rect.Height();//窗口正常的高
  7.         MoveWindowToMosttop();//设置窗口为最顶端居中显示
  8.         SetTimer(1,10,NULL);//启动定时器
复制代码
  1. void CGkbc8Dlg::MoveWindowToMosttop()
  2. {
  3.         CRect rect;
  4.         GetWindowRect(rect);
  5.         int x = (GetSystemMetrics(SM_CXSCREEN)-rect.Width())/2;
  6.         int y= (GetSystemMetrics(SM_CYSCREEN)-rect.Height())/2;
  7.         SetWindowPos(&wndTopMost,x,y,rect.Width(),rect.Height(),SWP_NOREDRAW);
  8. }
复制代码
4.实现定时器函数的处理
  1. void CGkbc8Dlg::OnTimer(UINT nIDEvent)
  2. {
  3.         // TODO: Add your message handler code here and/or call default
  4.         if(1 == nIDEvent)
  5.         {
  6.                 CRect rect;
  7.                 GetWindowRect(rect);
  8.                 int x = (GetSystemMetrics(SM_CXSCREEN)-rect.Width()-m_nDx)/2;
  9.                 int y= (GetSystemMetrics(SM_CYSCREEN)-rect.Height()-m_nDy)/2;
  10.                 SetWindowPos(&wndTopMost,x,y,rect.Width()+m_nDx,rect.Height()+m_nDy,SWP_NOREDRAW);
  11.                 if(rect.Width()>=m_nWidth)
  12.                 {
  13.                         m_nDx=0;
  14.                 }
  15.                 if( rect.Height()>=m_nHeight)
  16.                 {
  17.                         m_nDy=0;
  18.                 }
  19.                 if(rect.Width()>=m_nWidth&&rect.Height()>=m_nHeight)
  20.                 {
  21.                         KillTimer(1);
  22.                         //load skin
  23.                         CGkbc8App * pApp = (CGkbc8App *)AfxGetApp();
  24.                         pApp->RandomChangeSkin();
  25.                 }
  26.                 Invalidate();
  27.         }
  28.         CDialog::OnTimer(nIDEvent);
  29. }
复制代码
演示功能实现的过程
源码及视频下载
(仅在电脑可见)
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:36.上位机VC MFC实现程序动画显示.rar 
文件大小:117.12 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索