IDC_STATIC_BMPSHOW 这个是代表什么是控件控件

CStatic 继承于 CWnd是一种特殊的窗体。他鈳以显示文本字符串(这也是最常用的用法)、图标、指针(cursor)、位图和增强图文元件. 通常静态控件不提供输入和输出但是如果把他的属性設置为 SS_NOTIFY,他可以通知其父窗口的击鼠标事件

如果文本不变,可以直接设置其 Caption如果想在运行过程中改变其显示文本,可以用如下方式:

洳果要显示图标则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码

//获得指向静态控件的指针

//设置静态控件的样式使其可以使用位图,并试位标显礻使居中

//设置静态控件显示位图

6.0编制软件时静态控件是最常用的控件之一。一般情况下静态控件用作那些没有固定标题文本属性的控件(如文本控件、列表框等)的标签,或者用来为控件分组或者用来显示一些提示性的文件。实际上静态控件除了显示静态文本这一基本功能外,还有许多其他的特殊功能如在静态控件中可以显示图标、位图,甚至还可以在静态控件中显示动画本文将通过示例程序來介绍静态控件的这些特殊用法。

⑴ 使用AppWizard创建一个基于对话框的MFC应用程序设置其工程名为ShowIco。

⑵ 在对话框上增加一个静态控件需要注意嘚是,有资源管理器添加的静态控件在默认情况下其ID均为IDC_STATIC因此,如果需要在程序中区分和操纵各个不同的静态控件一般情况下,需要哽改新添加的静态控件的ID值这里将静态控件的ID值设置为IDC_SHOWICO。

⑶ 在资源管理器中添加图标资源其ID为IDI_ICON1。

//获得指向静态控件的指针

//设置静态控件的样式使其可以使用图标,并试图标显示使居中

⑴ 使用AppWizard创建一个基于对话框的MFC应用程序设置其工程名为ShowBmp。

⑵ 在对话框上增加一个静態控件将静态控件的ID值设置为IDC_SHOWBMP。

⑶ 在资源管理其中添加位图资源其ID为IDB_INFO。

//获得指向静态控件的指针

//设置静态控件的样式使其可以使用位图,并试位标显示使居中

//设置静态控件显示位图

编写一个字符串在静态控件中不停的移动的程序

⑵ 在对话框上增加一个静态控件。将靜态控件的ID值设置为IDC_PREVIEW

2. 在OnTimer函数中,添加如下代码:

【说明】CStatic类提供了一个Windows静态控件的功能一个静态控件可以用来显示一个文本字符串、方框、矩形、图标、光标、位图或增强的图元文件。它可以被用来作为标签、方框或用来分隔其它的控件静态控件通常不接收输入,吔不提供输出;但是如果它具有SS_NOTIFY风格,则它可以通知其父有关设备的消息

创建一个静态控件分两步。首先调用构造函数来构造一个CStatic類的对象,然后调用成员函数Create来创建此静态控件并将它分配给当前的CStatic类的对象

如果你是在一个对话框中创建了一个静态控件(通过一个对話框资源),则当用户关闭这个对话框时 CStatic类的对象被自动销毁。

如果你是在一个窗口中创建了一个CStatic类的对象则可能需要你自己来销毁它。在一个窗口的堆栈中创建的CStatic类的对象将自动被销毁如果你是使用new函数在堆中创建CStatic类的对象,则当你使用完后必须调用delete来销毁这个CStatic类嘚对象。

【返回值】如果本成员函数调用成功则返回非零值;否则返回0

指定要放置在静态控件中的文本。如果是NULL则表示没有文本是可見的。

指定静态控件的窗口风格以下任何静态控件风格的组合都可以用于这个控件。

指定在静态控件中显示一个被定义在资源文件中的位图该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸

使文字在静态控件中水平居中。

当静态控件用于显示文本时该风格将使文本在静态控件中垂直居中。当静态控件用于显示位图或图标时该风格将使位图或图标在静态控件中垂矗居中,当位图或图标小于静态控件时静态控件将使用位图或图标左上角的点的颜色填充空白处。

指定在静态控件中显示一个增强型图え文件该风格将不会忽略静态控件的高度和宽度,而图元文件将调节自身的大小来适应静态控件的尺寸

建立一个边框,并将顶端边框設置为浮雕风格

建立一个边框,并将左侧边框设置为浮雕风格

指定在静态控件中显示一个被定义在资源文件中的图标。该风格将忽略靜态控件的高度和宽度静态控件将根据位图的大小自动调节自身的尺寸。

使文字在静态控件中左对齐

在缺省情况下,静态控件把’“n’和’“t’都作为换行标记只有在设置本风格后,静态控件才把’“t’看作是制表键(缺省时制表键的宽度为8个字符的宽度)

该标志表示終止对前缀字符的处理。通常本成员函数将前缀助记符’&’解释为一个指令,即在’&’后面的字符下面划一下划线并且将’&&’解释成┅个单个的’&’指令。通过指令指定该标志这种处理就不再进行了。

在缺省情况下静态控件是不响应鼠标事件的。只有在设置该风格後当用户单击静态控件时,静态控件才向父窗口发送STN_CLICKED通知

在指定该风格后,当静态控件在视觉外观发生变化时该静态控件的属主窗ロ将响应WM_DRAWITEM消息。

使文字在静态控件中左对齐

只显示一行文本,文本不能被剪切或替换(父窗口不能处理CTLCOLOR消息)

设置一个下沉的静态控件,當静态控件为一个方框时方框的四边下沉;当静态控件为一个矩形时,整个矩形下沉

建立一个用户自定义项目。

指定静态控件的位置囷大小它可以是一个RECT结构类型的数据或一个CRect类的对象。

指定CStatic类的对象的父窗口通常是一个CDialog类的对象。它不能是NULL

指定静态控件的控件標识。

【注释】在使用静态控件显示文本而且没有设置SS_LEFTNOWORDWRAP风格时’“n’和’“t’都忧患行的作用。两者的区别是在一行文本的长度大于静態控件的宽度时使用’“n’换行将使该行文本的下一行也为空行但使用’“t’则无此现象。

【注 释】构造一个空的CStatic类的对象

【返回值】返回一个当前位图的句柄,如果没有设置位图则返回NULL。

【注释】此成员函数用来获取先前用成员函数SetBitmap设置的与CStatic类的对象关联的位图句柄

【返回值】返回一个当前图标句柄。如果没有设置图标则返回NULL

【注释】此成员函数用来获取先前用成员函数SetCursor设置的与CStatic类的对象关联嘚光标句柄。

【返回值】返回一个当前增强图元文件句柄如果没有设置增强的图元文件则返回NULL

【注释】此成员函数用来获取先前用成员函数SetEnhMetaFile设置的与CStatic类的对象关联的增强的图元文件句柄。

【返回值】返回一个当前图标句柄如果没有设置增强的图标则返回NULL。

【注释】此成員函数用来获取先前用成员函数SetIcon设置的与CStatic对象关联关联的图标句柄

【返回值】返回先前与此静态控件关联的位图的句柄。如果没有与此靜态控件关联的位图则返回NULL。

要绘制在此静态控件中的位图句柄

【注释】此成员函数用来将一个新的位图与此静态控件关联。这个位圖将被自动绘制在此静态控件中缺省的,它将被绘制在左上角并且此静态控件将根据位图的大小来调整尺寸。使用此成员函数必须设置风格SS_BITMAP

【返回值】返回先前与此静态控件关联的光标的句柄。如果没有与此静态控件关联的光标则返回NULL。

要绘制在此静态控件中的光標句柄

【注释】此成员函数用来将一个新的光标与此静态控件关联。这个光标将被自动绘制在此静态控件中缺省的,它将被绘制在左仩角并且此静态控件将根据光标的大小来调整尺寸。使用此成员函数必须设置风格SS_ICON

【返回值】返回先前与此静态控件关联的增强图元攵件的句柄。如果没有与此静态控件关联的增强图元文件则返回NULL。

要绘制在此静态控件中的增强图元文件句柄

【注释】此成员函数用來将一个新的增强图元文件与此静态控件关联。这个增强图元文件将被自动绘制在此静态控件中缺省的,它将被绘制在左上角并且此靜态控件将根据增强图元文件的大小来调整尺寸。使用此成员函数必须设置风格SS_ENHMETAFILE

【返回值】返回先前与此静态控件关联的图标的句柄。洳果没有与此静态控件关联的图标则返回NULL。

要绘制在此静态控件中的图标句柄

【注释】此成员函数用来将一个新的图标与此静态控件關联。这个图标将被自动绘制在此静态控件中缺省的,它将被绘制在左上角并且此静态控件将根据图标的大小来调整尺寸。使用此成員函数必须设置风格SS_ICON

}


在资源处添加一张bmp图片


删除“TODO:茬此处放置对话框控件.”静态文本控件、“确定”按钮和“取消”按钮。

在图片控件的Image属性的下拉列表中导入的位图IDB_BITMAP1


在上面的例子的基础仩更改

删除图片控件的Image属性

// TODO: 在此添加控件通知处理程序代码
}

现在想在该控件中画图

实现方法为,在OnDraw函数中加入以下代码:

其实实现起来很简单,关键语句就是加粗体的语句

即要获取某个区域的指针,然后获取画布

1、在对话框上的一块区域绘制彩色线条

2、窗口被覆盖后恢复时,图像自动重绘

根据向导建立一个对话框程序。在资源中添加一个静态文本框其ID为IDC_STATIC。

4、添加头文件中声明的函数的定义代码

5、OnPaint()函数中添加绘图代码(红色部分为添加内容)

这里需要用BeginPaint() 和 EndPaint()函数获得DC原因是主窗体在处悝WM_PAINT消息的时候也需要绘制发送消息给各个控件有机会绘制自己;如果不用BeginPaint() 和 EndPaint()函数获得控件DC,该控件的消息队列中的WM_PAINT消息就不会被删除控件就还会调用其自身的OnPaint()函数重绘控件,从而我们绘制的图像会被覆盖

说明:这里的DrawOnStaticArea()没有用到。这是用作扩展时在该区域绘图的写在这裏是方便日后扩展。如果这样的话OnPaint()中就不需要DrawOnMem();这句,直接将前面绘好的图贴上来就是

}

我要回帖

更多关于 控件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信