CWnd类提供了微软基础类库中所有窗口类的基本功能。

数据成员

m_hWnd 指明与这个CWnd对象相关联的HWND句柄

 

构造和析构 :

CWnd 构造一个CWnd对象

DestroyWindow 销毁相关联的Windows窗口

 

获取CWnd指针

CWnd* h_Wnd=GetDlgItem(IDD_DXCAPTURE_DIALOG);

获取HWND

HWND GetSafeHwnd( ) const;

返回值:返回窗口的句柄。如果CWnd对象没有与一个窗口连接或它使用的CWnd指针为NULL,则返回NULL。

CWnd 常用方法

 

 

BOOL ShowWindow( int nCmdShow );

返回值:如果窗口原来可见,则返回非零值;如果CWnd原来是隐藏的,则返回0。

参数:nCmdShow指定了CWnd应如何被显示。常用数值:

SW_HIDE 隐藏窗口并将活动状态传递给其它窗口。

SW_SHOW 激活窗口并以其当前的大小和位置显示。

 

void Invalidate( BOOL bErase = TRUE );

参数: bErase 指定是否要擦除更新区域内的背景。

 

void UpdateWindow( );

说明: 如果更新区域不为空,则发送一条WM_PAINT消息以更新客户区域。UpdateWindow成员函数直接发送一条WM_PAINT消息,越过应用程序队列。如果更新区域为空,则WM_PAINT不会被发送。

 

窗口文本函数:

void SetWindowText( LPCTSTR lpszString );

参数: lpszString 指向一个CString对象或以null结尾的字符串,将被用作新的标题或控件文本。

说明:这个函数将窗口的标题设为指定的文本。如果窗口为一个控件,则将设置控件内的文本。

这个函数使一条WM_SETTEXT消息被发送到这个窗口。

 

int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;

void GetWindowText( CString& rString ) const;

返回值:指定了要拷贝的字符串的长度,以字节为单位,不包括结尾的空字符。如果CWnd没有标题或标题为空,则为0。

参数: lpszStringBuf 指向要接收窗口标题的复制字符串的缓冲区。

nMaxCount 指定了要拷贝的缓冲区的最大字符数目。如果字符串比nMaxCount指定的数目还要长,则被截断。

rString 用于接收窗口标题的复制字符串的CString对象。

说明:这个函数将CWnd的标题(如果有)拷贝到lpszStringBuf指向的缓冲区或者目的字符串rString。如果CWnd对象是一个控件,则GetWindowText成员函数将拷贝控件内的文本(而不是控件的标题)。这个成员函数会向CWnd对象发送一个WM_GETTEXT消息。

 

void SetFont( CFont* pFont, BOOL bRedraw = TRUE );

参数: pFont 指定了新的字体。

bRedraw 如果为TRUE,则重画CWnd对象。

说明:这个函数将窗口的当前字体设为指定的字体。如果bRedraw为TRUE,则窗口还会被重画。

 

CFont* GetFont( ) const;

返回值:指向一个CFont对象的指针,其中包含了当前的字体。

这个指针可能是临时的,不能被保存以供将来使用。

说明:获得窗口的当前字体

 

 

窗体位置和大小:

void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );

void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );

 

参数: x 指定了CWnd的左边的新位置。

y 指定了CWnd的顶部的新位置。

nWidth 指定了CWnd的新宽度。

nHeight 指定了CWnd的新高度。

bRepaint 指定了是否要重画CWnd。如果为TRUE,则CWnd象通常那样在OnPaint消息处理函数中接收到一条WM_PAINT消息。如果这个参数为FALSE,则不会发生任何类型的重画操作。这应用于客户区、非客户区(包括标题条和滚动条)和由于CWnd移动而露出的父窗口的任何部分。当这个参数为FALSE的时候,应用程序必须明确地使CWnd和父窗口中必须重画的部分无效或重画。

lpRect CRect对象或RECT结构,指定了新的大小和位置。

 

说明:这个函数改变窗口的位置和大小。

对于顶层的CWnd对象,x和y参数是相对于屏幕的左上角的。对于子对象,它们是相对于父窗口客户区的左上角的。

MoveWindow函数发送一条WM_GETMINMAXINFO消息。处理这个消息时,CWnd得到一个改变最大和最小的窗口缺省值的机会。如果传递给MoveWindow成员函数的参数超过了这些值,则在WM_GETMINMAXINFO处理函数中可以用最小或最大值来代替这些值。

 

BOOL SetWindowPos(

     const CWnd* pWndInsertAfter,

     int x, int y,

     int cx, int cy,

     UINT nFlags

    );

返回值:如果函数成功,则返回非零值;否则返回0。

 

注:参数和说明见:MFC类库详解