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类库详解