mfc如何显示对话框,mfc弹出模态对话框

  mfc如何显示对话框,mfc弹出模态对话框

  在表单扩展过程中:

  表单完整显示:

  为了显示动画窗口,我们需要将MoveWindow函数与计时器结合起来。MoveWindow函数可以改变指定窗口的位置和大小,定时器可以在一定时间内动态改变窗口的位置和大小。MoveWindow函数的原型如下:

  原型:Bool移动窗口(hwnd hwnd,int x,int y,int nwidth,int nheight,Bool b repaint);

  指定窗口的句柄。

  x指定CWnd左边的新位置。

  指定CWnd顶部的新位置。

  NWTH指定CWnd的新nWidth。

  NHeight指定CWnd的新高度。

  指定是否重绘CWnd。如果为TRUE,CWnd照常在OnPaint消息处理函数中接收WM_PAINT消息。如果该参数为FALSE,将不会发生任何类型的重绘操作。这适用于客户区、非客户区(包括标题栏和滚动条)以及由于CWnd移动而暴露的父窗口的任何部分。当此参数为FALSE时,应用程序必须显式地使CWnd和父窗口中必须重绘的部分无效或重绘。

  move向窗口发送WM_WINDOWPOSCHANGING、WM_WINDOWPOSCHANGED、WM_MOVE、WM_SIZE和WM_NCCALCSIZE消息。

  move window()void cwnd:move window的两个重载函数(int x,int y,int nwidth,int nheight,bool b repaint=true);

  void CWnd:move window(LPC rect lpRect,BOOL bre paint=TRUE);

  x指定CWnd左边的新位置。

  指定CWnd顶部的新位置。

  NWTH指定CWnd的新nWidth。

  NHeight指定CWnd的新高度。

  指定是否重绘CWnd。如果为TRUE,CWnd照常在OnPaint消息处理函数中接收WM_PAINT消息。如果该参数为FALSE,将不会发生任何类型的重绘操作。这适用于客户区、非客户区(包括标题栏和滚动条)以及由于CWnd移动而暴露的父窗口的任何部分。当此参数为FALSE时,应用程序必须显式地使CWnd和父窗口中必须重绘的部分无效或重绘。

  lpRectCRect对象或Rect结构指定新的大小和位置。解释这个函数改变了窗口的位置和大小。对于顶层的CWnd对象,x和y参数相对于屏幕的左上角。对于子对象,它们相对于父窗口客户区的左上角。

  MoveWindow函数发送WM_GETMINMAXINFO消息。在处理该消息时,CWnd有机会更改最大和最小窗口的默认值。如果传递给MoveWindow成员函数的参数超过了这些值,则可以使用最小值或最大值来替换WM_GETMINMAXINFO处理程序中的这些值。

  先看这个的实现过程:

  void CDHxsctDlg:on timer(UINT nIDEvent)

  //TODO:在此添加您的消息处理程序代码和/或调用default

  GetWindowRect(rect);

  GetDesktopWindow()-GetWindowRect(RC);

  MoveWindow((-m_dx rc。Width()-rect。Width())/2,

  (-m_dy rc。Height()-rect。Height())/2,

  m_dx rect。Width(),m_dy rect。height());

  如果(rect。Height()=m_height)

  m _ dy=0;

  如果((rect。Width()=m_width) (rect。Height()=m_height))

  kill timer(1);

  CDialog:on timer(nIDEvent);

  在对话框初始化功能中:

  GetWindowRect(rect);

  GetDesktopWindow()-GetWindowRect(RC);

  MoveWindow((rc。Width()-rect。Width())/2,(rc。Height()-rect。Height())/2,0,0);

  m_width=rect。width();

  m_height=rect。height();

  m _ dx=2;

  m _ dy=2;

  SetTimer(1,10,NULL);

  因此,实现了上述效果。

mfc如何显示对话框,mfc弹出模态对话框