MFC-核心类库-CWnd的成员函数介绍(三)

CRect类

数据成员有left,top,right,和bottom。

left左上角X坐标,top左上角Y坐标,right右下角X坐标,bottom右下角Y坐标。

rect.InflateRect(3,3);//修改CRect的宽和高,每次增加3,3
rect.OffsetRect(5,5);//修改CRect的x、y值,每次增加5,5

CWnd中计时器操作函数:

CWnd::SetTimer

功能:设置计时器

  UINT_PTR SetTimer(
   UINT_PTR nIDEvent,
   UINT nElapse,
   void(CALLBACK * lpfnTimer
)(HWND,
   UINT,
   UINT_PTR,
   DWORD
) 
);

参数nIDEvent指定一个非零的定时器ID;
参数nElapse指定间隔时间,单位为毫秒;

参数lpfnTimer指定一个回调函数的地址,如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。如果此函数成功则返回一个新的定时器的ID,我们可以使用此ID通过KillTimer成员函数来销毁该定时器,如果函数失败则返回0。

例如:

SetTimer(123,500,NULL);//ID为123,每隔500ms触发一次OnTimer

CWnd::KillTimer

功能:清除计时器

 BOOL KillTimer(
   UINT_PTR nIDEvent //计时器ID
);

例如:

KillTimer(123);//关闭计时器123

CWnd中窗口操作函数:

CWnd::ShowWindow

功能:设定视窗的可视性状态。

BOOL ShowWindow(
   int nCmdShow 
);

nCmdShow指定了CWnd应如何被显示。它必须是下列值之一:

SW_HIDE 隐藏窗口并将活动状态传递给其它窗口。
SW_MINIMIZE 最小化窗口并激活系统列表中的顶层窗口。
SW_RESTORE 激活并显示窗口。如果窗口是最小化或最大化的,Windows恢复其原来的大小和位置。
SW_SHOW 激活窗口并以其当前的大小和位置显示。
SW_SHOWMAXIMIZED 激活窗口并显示为最大化窗口。
SW_SHOWMINIMIZED 激活窗口并显示为图标。
SW_SHOWMINNOACTIVE 将窗口显示为图标。当前活动的窗口将保持活动状态。
SW_SHOWNA 按照当前状态显示窗口。当前活动的窗口将保持活动状态。
SW_SHOWNOACTIVATE 按窗口最近的大小和位置显示。当前活动的窗口将保持活动状态。
SW_SHOWNORMAL 激活并显示窗口。如果窗口是最小化或最大化的,则Windows恢复它原来的大小和位置。

CWnd::EnableWindow

功能:激活或者禁用窗口

BOOL EnableWindow(
   BOOL bEnable = TRUE 
);

参数bEnable为TRUE,启用。FALSE禁用。

例如:

        CWnd* pCanc = GetDlgItem(IDCANCEL);
	if(pCanc->IsWindowEnabled())//可用
		pCanc->EnableWindow(false);//禁用
	else
		pCanc->EnableWindow(true);//激活

CWnd::MoveWindow

作用:改变窗口的位置。如果是父窗口,则坐标系是基于屏幕。如果是子窗口,则坐标系是基于父窗口。

void MoveWindow(
   int x,//左边的新坐标
   int y,//顶端的新坐标
   int nWidth,//宽度
   int nHeight,//高度
   BOOL bRepaint = TRUE //为TURE表示需要重新绘制。
);
void MoveWindow(
   LPCRECT lpRect,
   BOOL bRepaint = TRUE 
);

CWnd::CenterWindow

作用:相对于父窗口居中。

void CenterWindow(
   CWnd * pAlternateOwner = NULL //指向居中窗口的指针。(父窗口除外)
);

CWnd::SetWindowPos

作用:更改窗口的x,y,z轴的位置。

 BOOL SetWindowPos(
   const CWnd* pWndInsertAfter,
   int x,//指定窗口的左侧的新位置。
   int y,//指定窗口顶部的新位置。
   int cx,//指定窗口的新的宽度
   int cy,//指定窗口的新高度
   UINT nFlags 
);

pWndInsertAfter为以下几个参数:

wndBottom 将窗口底部的z-顺序。 如果此 CWnd 是一个最顶层窗口,窗口丢失其最顶层的状态;系统将窗口在其他窗口底部。
wndTop 将窗口在z-顺序的顶部。
wndTopMost 将windows首先非最顶层窗口。 即使当停用,窗口保留其最顶层的位置它。

wndNoTopMost 在任何非最顶层窗口的顶部重新定位窗口(即所有最顶层窗口)后。 如果窗口已非最顶层窗口,此标志将不起作用。

nFlags可以为以下参数的组合:

SWP_DRAWFRAME 在窗口周围绘制帧(定义窗口时所创建的)。
SWP_FRAMECHANGED 发送 WM_NCCALCSIZE 信息到窗口,因此,即使未更改窗口的大小。 如果此标志未指定,则发送 WM_NCCALCSIZE,仅当更改时窗口的大小。
SWP_HIDEWINDOW 隐藏窗口。
SWP_NOACTIVATE 不窗口被激活。 如果此未设置任何标志,窗口激活和移到最顶层或非最顶层的组顶级(基于设置 pWndInsertAfter 参数)。
SWP_NOCOPYBITS 放弃工作区的整个内容。 如果此标志未指定,工作区的有效内容保存并将其复制到工作区,在窗口的大小或重新定位之后。
SWP_NOMOVE 保留当前位置(忽略 x 和 y 参数)。
SWP_NOOWNERZORDER 不会更改。z-顺序的所有者窗口的位置。
SWP_NOREDRAW 不重绘更改。 如果此标志设置,重新绘制任何类型不会发生。 这适用于工作区、非工作区(包括标题和滚动条)和由于移动后的窗口中的父窗口的任何部分。 在此标志设置为时,应用程序必须显式无效或重绘必须重绘窗口和父窗口的所有部件。
SWP_NOREPOSITION SWP_NOOWNERZORDER相同。
SWP_NOSENDCHANGING 防止窗口收到 WM_WINDOWPOSCHANGING 消息。
SWP_NOSIZE 保留当前范围(忽略 cx 和 cy 参数)。
SWP_NOZORDER 保留当前排序(忽略 pWndInsertAfter)。
SWP_SHOWWINDOW 显示窗口。

CWnd::BringWindowToTop

作用:将窗口带到重叠窗口的最顶层。

void BringWindowToTop( );

CWnd中判断窗口状态函数:

CWnd::IsWindowVisible

作用:判断窗口是否可见或被隐藏。

BOOL IsWindowVisible( ) const;

CWnd::IsWindowEnabled

作用:判断窗口是激活或者禁用状态。

BOOL IsWindowEnabled( ) const;

CWnd::IsIconic

作用:判断是否最小化

BOOL IsIconic( ) const;

CWnd::IsZoomed

作用:判断是否最大化

BOOL IsZoomed( ) const;

CWnd::GetWindowRect

作用:获取以屏幕坐标系为基础的窗口矩形区域。

void GetWindowRect(
   LPRECT lpRect //用于接收窗口的位置信息。
)const;

例如:

CRect rect;
m_edit.GetWindowRect(rect);//得到相对于当前屏幕的位置

CWnd::GetClientRect

作用:获取以对象关联的以其客户区为基础的客户区矩形区域。(left和top必然是0)

void GetClientRect(
   LPRECT lpRect 
) const;

CWnd::GetTopWindow

作用:获取当前父窗口内所有子窗口中最底(top)的子窗口。

CWnd* GetTopWindow( ) const;

CWnd::GetForegroundWindow

作用:获取任务栏内目前正在前台的一个主窗口。

static CWnd* PASCAL GetForegroundWindow( );

CWnd::GetActiveWindow

作用:在同一进程内所有窗口中处于激活状态的窗口。

static CWnd* PASCAL GetActiveWindow( );

CWnd中刷新函数:

CWnd::Invalidate

作用:使整个窗口客户区无效

void Invalidate(
   BOOL bErase = TRUE //参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。
);

CWnd::InvalidateRect

作用:使指定客户区无效,窗口的客户区无效意味着需要重绘

void InvalidateRect(
   LPCRECT lpRect,
   BOOL bErase = TRUE 
);

CWnd::UpdateWindow

作用:使整个窗口客户区无效

Invalidate区别:UpdateWindow( )的作用是使窗口立即重绘。调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。

CWnd::ClientToScreen

作用:客户区坐标转换为屏幕区坐标

void ClientToScreen(
   LPPOINT lpPoint 
) const;
void ClientToScreen(
   LPRECT lpRect 
) const;

CWnd::ScreenToClient

作用:屏幕区坐标转换为客户区坐标

void ScreenToClient(
   LPPOINT lpPoint 
) const;
void ScreenToClient(
   LPRECT lpRect 
) const;


你可能感兴趣的:(mfc)