CImageTextButton

介绍 你好家伙……您在找一种特殊的纽扣吗??那就拿去吧:-)。我只是在开玩笑…现在,言归正传,上传这篇文章的灵感是,因为我没有从网上得到正确的解决方案,在位图按钮的指定位置显示“文本”。我想你有问题吗?是的,我想显示一些按钮必须加载一些位图为它的上,下和禁用状态。我还想在上面显示一些文字…记住,有CBitmapButton,但它只能加载位图,不能显示文本。因此,我决定编写一个可重用的类来加载位图(如果位图被提供给类的话),并提供一些方法来为按钮提供所需的文本。接下来就是着色问题了。谁将为文本着色,用什么颜色显示文本的字体等。所以,我决定给出支持这些点的方法。现在,我. .不,你有一个很酷的简单的工作代码,可以很容易地合并到你的工作空间。 特性。 加载位图(上、下、禁用状态;只有上状态位图是强制性的,其他是可选的)是可能的。 文本位置可以用两种不同的方式设置(可以指定x,y位置或像DT_CENTER|DT_VCENTER等)。 文本字体和字体大小可以为每个按钮配置。 文本颜色为上,下和禁用可以配置。 按钮的大小将调整为位图的大小。 现在,看看CImageTextButton?隐藏,复制Code

class CImageTextButton : public CButton
{
 void SetTextPosition(UINT uiPos );
 void SetTextPosition(int nXPos ,int nYPos);
 void SetTextColor(const COLORREF& clrUpDwn, const COLORREF& clrDisabled );
 void SetButtonText(const CString& strCaption);
 void SetButtonImg(UINT uiImageIDU,UINT uiImgIDD =0,UINT uiImgIDX = 0);
 void SetFont(CString srtFntName_i, int nSize_i);
}

函数使用。 void SetButtonImg(UINT uiImageIDU,UINT uiImgIDD =0,UINT uiImgIDX =0) 方法,用于设置要为按钮加载的位图。位图的顺序是上行位图,然后是下行位图,最后是禁用位图。 空白SetButtonText (const CString&strCaption); 方法,用于设置按钮的标题/文本(如果按钮需要任何文本)。如果不调用此方法,则只加载位图。 空白SetTextColor (const COLORREF&clrUpDwn const COLORREF&clrDisabled); 方法,用于为按钮的上、下和禁用状态设置按钮标题的颜色。这只在调用SetButtonText()时有效。 void SetTextPosition(UINT uiPos); 用于设置文本位置的方法。有效的单位值是..隐藏,CodeDT_TOP 复印件;,,,,,,,,0 x00000000 DT_LEFT ,,,,,,, 0 x00000000 DT_CENTER ,,,,,, 0 x00000001 DT_RIGHT ,,,,,,, 0 x00000002 DT_VCENTER 0 x00000004 DT_BOTTOM 0 x00000008 DT_WORDBREAK ,, 0 x00000010 DT_SINGLELINE 0 x00000020 可以使用上述标志的任何组合。 void SetTextPosition(int nXPos,int nYPos); 用于设置文本的x、y位置的方法。如果没有调用SetTextPostion()中的任何一个,则文本将显示为DT_SINGLELINE|DT_CENTER|DT_VCENTER。 (CString srtFntName_i, int nSize_i); 方法,用于设置文本的字体名称和字体大小。如果它没有被调用,则采用具有默认大小的默认字体来绘制文本。 使用类的步骤。 添加ImageTextButton.h &cpp文件到工作空间。 添加#包括“ImageTextButton。h"在对话框的包括部分,希望有CImageTextButton,如下所示:复制代码# include“stdafx.h” # include“ImageTextButton.h” 将对应于每个按钮的CImageTextButton对象声明为:复制代码//添加对应于每个按钮的成员变量 CImageTextButton m_btnOK; CImageTextButton m_btnPlay; CImageTextButton m_btnEnable; CImageTextButton m_btnStrt; 在对话框的OnInitDialog()中设置按钮所需的属性:Hide  复制Codem_btnOK.SetButtonImg (IDB_OKU IDB_OKD); m_btnOK.SetButtonText(“OK”); m_btnOK.SetFont(“天线”,16); m_btnOK.SetTextColor (RGB (255, 0, 0), RGB (129129129); m_btnOK.SubclassDlgItem (IDOK,); 重要的 不要忘记为所有位图按钮成员调用SubclassDlgItem(),只有在这个调用之后,Windows消息才会到达我玩了这个把戏的CImageTextButton… 现在,是时候构建应用程序并享受结果了。 [如果你们中有人发现使用这个有任何问题,请给我发邮件…] 本文转载于:http://www.diyabc.com/frontweb/news500.html

原文地址:https://www.cnblogs.com/Dincat/p/13450235.html