博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CStatic使用总结
阅读量:3590 次
发布时间:2019-05-20

本文共 3856 字,大约阅读时间需要 12 分钟。

1704人阅读
(0)
本文章已收录于:
分类:
X
    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  ---  文字右对齐
    [cpp]
    1. CStatic *pStaticText = new CStatic();  
    2. pStaticText->Create(  
    3.     TEXT("Hello Kitty"),  
    4.     WS_CHILD | WS_VISIBLE | SS_LEFT,  
    5.     CRect(10, 10, 100, 100),  
    6.     this);  
    7.   
    8. // 设置和对话框一样的字体    
    9. pStaticText->SetFont(this->GetFont());  
    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的实际大小调整控件大小到刚好合适。
    [cpp]
    1. CStatic *pStaticIcon = new CStatic();  
    2. pStaticIcon->Create(  
    3.     TEXT(""),  
    4.     WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE,  
    5.     CRect(10, 10, 100, 100),  
    6.     this);  
    7. HICON hIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1));  
    8. if (NULL != hIcon)  
    9. {  
    10.     pStaticIcon->SetIcon(hIcon);  
    11. }  
    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的实际大小调整控件大小到刚好合适。
    [cpp]
    1. CStatic *pStaticBitmap = new CStatic();  
    2. pStaticBitmap->Create(  
    3.     TEXT(""),  
    4.     WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE,  
    5.     CRect(10, 10, 100, 100),  
    6.     this);  
    7. HBITMAP hBitmap = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));  
    8. if (NULL != hBitmap)  
    9. {  
    10.     pStaticBitmap->SetBitmap(hBitmap);  
    11. }  
    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:若想从本地磁盘加载图片,请使用以下代码:   
    [cpp]
    HBITMAP hBitmap = (HBITMAP)::LoadImage(  
        AfxGetInstanceHandle(),  
        TEXT("D:\\test.bmp"),   
        IMAGE_BITMAP,   
        50, 50,   
        LR_DEFAULTCOLOR | LR_LOADFROMFILE | LR_CREATEDIBSECTION);  
    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格式就可以了。

    0
    0

    我的同类文章

    • 2015-05-16
    • 2015-05-16
    • 2012-12-10
    • 2012-11-24
    • 2012-11-24
    • 2015-05-16
    • 2015-05-16
    • 2012-11-24
    • 2012-11-24
    • 2012-11-22
    你可能感兴趣的文章
    Java语言程序设计(基础篇)第十版 5.3-6
    查看>>
    Java语言程序设计(基础篇)第十版 5.7
    查看>>
    Java语言程序设计(基础篇)第十版 5.8 5.9
    查看>>
    Java语言程序设计(基础篇)第十版 5.10-11
    查看>>
    Java语言程序设计(基础篇)第十版 5.12-13
    查看>>
    Java语言程序设计(基础篇)第十版 5.14
    查看>>
    Java语言程序设计(基础篇)第十版 5.15-16
    查看>>
    java语言程序设计 第十版(基础篇)5.22
    查看>>
    java语言程序设计 第十版(基础篇)5.23-26
    查看>>
    java语言程序设计 第十版(基础篇)6.3-4
    查看>>
    Oracle_001_怎么安装virtualbox虚拟机运行xp环境、oracle简介、virtualbox、VMWare
    查看>>
    FPGA之DDS信号发生器
    查看>>
    FPGA之CRC校验
    查看>>
    多线程常见面试题一
    查看>>
    计算机网络常见面试题一
    查看>>
    Hive使用regexp,RLIKE需要使用转义字符
    查看>>
    eclipse常用快捷键
    查看>>
    html大作业笔记
    查看>>
    力扣 3. 无重复字符的最长子串
    查看>>
    力扣617. 合并二叉树
    查看>>