CStatic使用总结

CStatic类对应Toolbox中的Static Text和Picture Control控件。
本篇主要研究怎样动态创建CStatic控件,相应的静态CStatic控件就会触类旁通。
先看一下CStaic::Create函数的原型:
BOOL Create(
   LPCTSTR lpszText,
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID = 0xffff 
);
lpszText   --- 显示的文本
dwStyle    --- 窗口风格
               【通用】
               WS_CHILD    子窗口,必须有
               WS_VISIBLE  窗口可见
               【CStatic专用】
               SS_ICON     显示Icon
               SS_BITMAP   显示Bitmap
               SS_NOTIFY   向父窗口发送事件消息
               SS_SUNKEN   控件周边有半沉的3D边框 
rect       --- 位置及大小
pParentWnd --- 父窗口
nID        --- ID
一、显示文本
窗口风格:
       SS_LEFT   ---  文字左对齐
       SS_CENTER ---  文字居中对齐
       SS_RIGHT  ---  文字右对齐
CStatic *pStaticText = new CStatic();
pStaticText->Create(
    TEXT("Hello Kitty"),
    WS_CHILD | WS_VISIBLE | SS_LEFT,
    CRect(10, 10, 100, 100),
    this);

// 设置和对话框一样的字体  
pStaticText->SetFont(this->GetFont());
二、显示ICON
窗口风格:
SS_CENTERIMAGE --- 使ICON居中显示,若Icon的实际大小大于控件的大小,则只显示居中的部分Icon
若不指定该风格,则Create函数中rect指定的大小不起作用,控件会根据Icon的实际大小调整控件大小到刚好合适。
CStatic *pStaticIcon = new CStatic();
pStaticIcon->Create(
    TEXT(""),
    WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE,
    CRect(10, 10, 100, 100),
    this);
HICON hIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1));
if (NULL != hIcon)
{
    pStaticIcon->SetIcon(hIcon);
}
三、显示Bitmap
窗口风格:
SS_CENTERIMAGE --- 使Bitmap居中显示,若Bitmap的实际大小大于控件的大小,则只显示居中的部分Bitmap
若不指定该风格,则Create函数中rect指定的大小不起作用,控件会根据Bitmap的实际大小调整控件大小到刚好合适。
CStatic *pStaticBitmap = new CStatic();
pStaticBitmap->Create(
	TEXT(""),
	WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE,
	CRect(10, 10, 100, 100),
	this);
HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));
if (NULL != hBitmap)
{
	pStaticBitmap->SetBitmap(hBitmap);
}
Note:
若想从本地磁盘加载图片,请使用以下代码:
    HBITMAP hBitmap = (HBITMAP)::LoadImage(
        AfxGetInstanceHandle(),
        TEXT("D:\\test.bmp"), 
        IMAGE_BITMAP, 
        50, 50, 
        LR_DEFAULTCOLOR | LR_LOADFROMFILE | LR_CREATEDIBSECTION);
LR_DEFAULTCOLOR     --- 指定按照原图的颜色加载图片,不可少
LR_LOADFROMFILE     --- 加载外部的Bitmap,一定要指定
LR_CREATEDIBSECTION --- 一般会指定
50,50               --- 指定图片大小                        
                        如要若按照图片本身的大小加载,则设置cx,cy为0,0,                        
                        并且在最后的标志位加上|LR_DEFAULTSIZE

注意:从网上下载的Bitmap图片可能用上面的方法加载失败,返回的HBITMAP为NULL,GetLastError()返回0,这个一般是图片格式的问题,可以用Windows的画图程序打开Bitmap再另存为24位位图的bmp格式就可以了。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值