CStatic类提供了一个Windows静态控件的性能。一个静态控件用来显示一个文本字符串、框、矩形、图标、光标、位图或增强的图元文件。它可以被用来作为标签,框,或用来分隔其它的控件。一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。
创建一个静态控件分两步。首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。如果你是在一个窗口中创建了一个CStatic对象,则必须由你来销毁它。在一个窗口的堆栈中创建的CStatic对象将自动被销毁。如果你是使用new函数在堆中创建CStatic对象,则当你使用完后,必须调用delete来销毁这个CStatic对象。
#include
构造:CStatic构造一个CStatic对象
初始化:Create创建Windows静态控件并将它与该CStatic对象连接
操作符:
SetBitmap:指定要在此静态控件中显示的位图;
GetBitmap:获取先前用SetBitmap设置的位图的句柄;
SetIcon:指定一个要在此静态控件中显示的图标;
GetIcon:获取先前用SetIcon设置的图标的句柄;
SetCursor:指定要显示在此静态控件中的光标图像;
GetCursor:获取先前用SetCursor设置的光标图像的句柄;
SetEnhMetaFile:指定要显示在此静态控件中的增强的图元文件;
GetEnhMetaFile:获取先前用SetEnhMetaFile设置的增强图元文件的句柄。
返回值:如果成功则返回非零值;否则返回0;
参数:lpszText指定要放置在控件中的文本。如果是NULL,则表示没有文本是可见的。dwStyle指定静态控件的窗口风格。任何静态控件风格的组合都可以用于这个控件。rect指定静态控件的位置和大小。它可以是一个RECT结构或一个CRect对象。pParentWnd指定CStatic父窗口,通常是一个CDialog对象。它不能是NULL。nID指定静态控件的控件ID。
说明:可以将下列窗口风格用于一个静态控件:
·WS_CHILD总要使用。
·WS_VISIBLE经常使用。
·WS_DISABLED很少使用。
如果你准备在此静态控件中显示一个位图,光标,图标,或图元文件,你必须使用下列风格之一:
·SS_BITMAP此风格用于位图。
·SS_ICON此风格用于光标和图标。
·SS_ENHMETAFILE此风格用于增强的图元文件。
对于光标,位图,或图标,你也可以使用下面的风格:
·SS_CENTERIMAGE用来使静态控件中的图像居中。
说明:此成员函数用来构造一个CStatic对象。
返回值:返回一个当前位图的句柄,如果没有设置位图,则返回NULL。
说明:此成员函数用来获取先前用SetBitmap设置的与CStatic关联的位图句柄。
返回值:返回一个当前图标句柄。如果没有设置图标则返回NULL。
说明:此成员函数用来获取先前用SetCursor设置的与CStatic关联的光标句柄。
返回值:返回一个当前增强图元文件句柄。如果没有设置增强的图元文件则返回NULL。
说明:此成员函数用来获取先前用SetEnhMetaFile设置的与CStatic关联的增强的图元文件句柄。
返回值:返回一个当前图标句柄。如果没有设置增强的图标则返回NULL。
说明:此成员函数用来获取先前用SetIcon设置的与CStatic关联的图标句柄。
返回值:返回先前与此静态控件关联的位图的句柄。如果没有与此静态控件关联的位图,则返回NULL。
参数:hBitmap要绘制在此静态控件中的位图句柄。
说明:此成员函数用来将一个新的位图与此静态控件关联。
这个位图将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,并且此静态控件将根据位图的大小来调整尺寸。
你可以使用不同的窗口和静态控件风格,包括下列值:
·SS_BITMAP此风格总是用于位图。
·SS_CENTERIMAGE用来在此静态控件中居中。如果图像比静态控件大,则它将被剪切掉。如果它比静态控件小,则图像周围的空间将被用位图左上角的像素的颜色填充。
返回值:返回先前与此静态控件关联的光标的句柄。如果没有与此静态控件关联的光标,则返回NULL。
参数:hCursor要绘制在此静态控件中的光标句柄。
说明:此成员函数用来将一个新的光标与此静态控件关联。
这个光标将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,并且此静态控件将根据光标的大小来调整尺寸。
你可以使用不同的窗口和静态控件风格,包括下列值:
·SS_ICON此风格总是用于位图。
·SS_CENTERIMAGE用来在此静态控件中居中。如果图像比静态控件大,则它将被剪切掉。如果它比静态控件小,则图像周围的空间将被用位图左上角的像素颜色填充。
返回值:返回先前与此静态控件关联的增强图元文件的句柄。如果没有与此静态控件关联的增强图元文件,则返回NULL。
参数:hMetaFile要绘制在此静态控件中的增强图元文件句柄。
说明:此成员函数用来将一个新的增强图元文件与此静态控件关联。
这个增强图元文件将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,并且此静态控件将根据增强图元文件的大小来调整尺寸。
你可以使用不同的窗口和静态控件风格,包括下列值:
·SS_ENHMETAFILE此风格总是用于位图。
返回值:返回先前与此静态控件关联的图标的句柄。如果没有与此静态控件关联的图标,则返回NULL。
参数:hIcon要绘制在此静态控件中的图标句柄。
说明:此成员函数用来将一个新的图标与此静态控件关联。
这个图标将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,并且此静态控件将根据图标的大小来调整尺寸。
你可以使用不同的窗口和静态控件风格,包括下列值:
·SS_ICON此风格总是用于图标。
·SS_CENTERIMAGE用来在此静态控件中居中。如果图像比静态控件大,则它将被剪切掉。如果它比静态控件小,则图像周围的空间将被用位图左上角的像素颜色填充。
CStatic继承于 CWnd,是一种特殊的窗体。他可以显示文本字符串(这也是最常用的用法)、图标、指针(cursor)、位图和增强图文元件. 通常静态控件不提供输入和输出。但是如果把他的属性设置为 SS_NOTIFY,他可以通知其父窗口的击鼠标事件。
如果文本不变,可以直接设置其 Caption。如果想在运行过程中改变其显示文本,可以用如下方式:
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
pStatic->SetWindowText("Just a Test of StaticControl!");
CStatic 用于显示图标
如果要显示图标,则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码如下:
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
LONG style = GetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE);style |= SS_ICON;
style |= SS_CENTERIMAGE;
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style);
pStatic->SetIcon(m_hIcon);
如果要显示 cursor,则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码如下:
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
LONG style = GetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE);
style |= SS_ICON; style |= SS_CENTERIMAGE;SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style);
pStatic->SetCursor(OnQueryDragIcon());
如果要显示图标,则必须要设置窗口属性为 SS_BITMAP 和 SS_CENTERIMAGE,实例代码如下:
//获得指向静态控件的指针 CStatic*pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
//获得位图句柄 HBITMAPhBitmap=::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP2));
//LONG result =SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style);
//设置静态控件的样式,使其可以使用位图,并试位标显示使居中pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
//设置静态控件显示位图pStatic->SetBitmap(hBitmap);