工控编程吧
标题:
36上位机VC MFC实现程序动画显示
[打印本页]
作者:
qq263946146
时间:
2015-11-27 22:30
标题:
36上位机VC MFC实现程序动画显示
(, 下载次数: 1)
上传
点击文件名下载附件
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()窗口不可移动功能
BOOL CGkbc8Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_NCLBUTTONDOWN)
{
pMsg->message=WM_LBUTTONDOWN;
}
return CDialog::PreTranslateMessage(pMsg);
}
复制代码
3.添加变量 INTm_nDx;INT m_nDy;INT m_nWidth;INT m_nHeight;
在对话框初始化函数OnInitDialog()里进行程序初化
CRect rect;
GetWindowRect(rect);
m_nDx =10; //宽的增量
m_nDy = 10;//高的增量
m_nWidth = rect.Width();//窗口的正常宽
m_nHeight = rect.Height();//窗口正常的高
MoveWindowToMosttop();//设置窗口为最顶端居中显示
SetTimer(1,10,NULL);//启动定时器
复制代码
void CGkbc8Dlg::MoveWindowToMosttop()
{
CRect rect;
GetWindowRect(rect);
int x = (GetSystemMetrics(SM_CXSCREEN)-rect.Width())/2;
int y= (GetSystemMetrics(SM_CYSCREEN)-rect.Height())/2;
SetWindowPos(&wndTopMost,x,y,rect.Width(),rect.Height(),SWP_NOREDRAW);
}
复制代码
4.实现定时器函数的处理
void CGkbc8Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(1 == nIDEvent)
{
CRect rect;
GetWindowRect(rect);
int x = (GetSystemMetrics(SM_CXSCREEN)-rect.Width()-m_nDx)/2;
int y= (GetSystemMetrics(SM_CYSCREEN)-rect.Height()-m_nDy)/2;
SetWindowPos(&wndTopMost,x,y,rect.Width()+m_nDx,rect.Height()+m_nDy,SWP_NOREDRAW);
if(rect.Width()>=m_nWidth)
{
m_nDx=0;
}
if( rect.Height()>=m_nHeight)
{
m_nDy=0;
}
if(rect.Width()>=m_nWidth&&rect.Height()>=m_nHeight)
{
KillTimer(1);
//load skin
CGkbc8App * pApp = (CGkbc8App *)AfxGetApp();
pApp->RandomChangeSkin();
}
Invalidate();
}
CDialog::OnTimer(nIDEvent);
}
复制代码
演示功能实现的过程
[iqiyi]http://player.video.qiyi.com/a48a826db77931c89c7b40153119bd9b/0/0/w_19rtaebgvx.swf-albumId=4941584209-tvId=4941584209-isPurchase=0-cnId=12[/iqiyi]
源码及视频下载
(仅在电脑可见)
(, 下载次数: 1)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4