CStatic控件的基本使用

CStatic 继承于 CWnd,是一种特殊的窗体。他能够显示文本字符串(这也是最经常使用的用法)、图标、指针(cursor)、位图和加强图文元件. 一般静态控件不提供输入和输出。可是若是把他的属性设置为 SS_NOTIFY,他能够通知其父窗口的击鼠标事件。函数

一。CStatic 用于显示文本动画

      若是文本不变,能够直接设置其 Caption。若是想在运行过程当中改变其显示文本,能够用以下方式:spa

  • CStatic   *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
  • pStatic->SetWindowText("Just a Test of Static Control!");

二。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);

三。CStatic 用于显示指针 cursor继承

      若是要显示 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());

四。CStatic 用于显示位图资源

      若是要显示图标,则必需要设置窗口属性为 SS_BITMAP 和 SS_CENTERIMAGE,实例代码以下:字符串

  • //得到指向静态控件的指针  
    CStatic   *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
  • //得到位图句柄  
    HBITMAP   hBitmap=::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);

 

    • 文章出处:CSDN
    •  

      使用Visual C++ 6.0编制软件时,静态控件是最经常使用的控件之一。通常状况下,静态控件用做那些没有固定标题文本属性的控件(如文本编辑控件、列表框等)的标签,或者用来为控件分组,或者用来显示一些提示性的文件。实际上,静态控件除了显示静态文本这一基本功能外,还有许多其余的特殊功能,如在静态控件中能够显示图标、位图,甚至还能够在静态控件中显示动画。本文将经过示例程序来介绍静态控件的这些特殊用法。
        
        1. 显示图标
        ⑴ 使用AppWizard建立一个基于对话框的MFC应用程序,设置其工程名为ShowIco。
        ⑵ 在对话框上增长一个静态控件。须要注意的是,有资源管理器添加的静态控件在默认状况下其ID均为IDC_STATIC,所以,若是须要在程序中区分和操纵各个不一样的静态控件,通常状况下,须要更改新添加的静态控件的ID值。这里将静态控件的ID值设置为IDC_SHOWICO。
        ⑶ 在资源管理器中添加图标资源,其ID为IDI_ICON1。
        ⑷ 使用ClassWizard添加WM_INITDIALOG消息处理函数OnInitDialog。
        ⑸ 在OnInitDialog函数中下面的代码:
        //得到指向静态控件的指针
        CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWICO);
        //加载图标
        HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
        //设置静态控件的样式,使其能够使用图标,并试图标显示使居中
        pStatic->ModifyStyle(0xF,SS_ICON|SS_CENTERIMAGE);
        //设置静态控件图标
        pStatic->SetIcon(hIcon);
        运行该程序,显示如上图。
        
        2.显示位图
        ⑴ 使用AppWizard建立一个基于对话框的MFC应用程序,设置其工程名为ShowBmp。
        ⑵ 在对话框上增长一个静态控件,将静态控件的ID值设置为IDC_SHOWBMP。
        ⑶ 在资源管理其中添加位图资源,其ID为IDB_INFO。
        ⑷ 使用ClassWizard添加WM_INITDIALOG消息处理函数OnInitDialog。
        ⑸ 在OnInitDialog函数中下面的代码:
        //得到指向静态控件的指针
        CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP);
        //得到位图句柄
        HBITMAP Bitmap=::LoadBitmap(AfxGetApp()_hInstance,
          MAKINTRESOURCE(IDB_INFO));
        //设置静态控件的样式,使其能够使用位图,并试位标显示使居中
        pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
        //设置静态控件显示位图
        pStatic->SetBitmap(hBitmap);
        运行该程序便可。
        
        3. 显示动画
        编写一个字符串在静态控件中不停的移动的程序。
        ⑴ 使用AppWizard建立一个基于对话框的MFC应用程序,设置其工程名为ShowAnimation。
        ⑵ 在对话框上增长一个静态控件。将静态控件的ID值设置为IDC_PREVIEW。
        ⑶ 使用ClassWizard添加WM_INITDIALOG消息处理函数OnInitDialog和WM_TIMER的消息处理函数OnTimer。
        ⑷ 在CshowAnimationDlg类中,增长两个变量m_x和m_y,用以表示字符串的坐标。
        ⑸ 在OnInitDialog函数中添加下列代码:
         m_x=0;
         m_y=0;
          KillTimer(1);
         VERIFY(SetTimer(1, 500, NULL) != 0);
        1. 在CshowAnimationDlg类中,增长一个成员函数Draw()以下:
        void CshowAnimationDlg::Draw()
         {
          CWnd *pWnd=GetDlgItem(IDC_PREVIEW);
        CDC *pDC=pWnd->GetDC();
        RECT rect;
         pWnd->GetClientRect(&rect);
        pWnd->Invalidate();
        pWnd->UpdateWindow();
         pDC->SelectStockObject(BLACK_BRUSH);
        pDC->Rectangle(0,0,rect.right,rect.bottom);
         pDC->SetTextColor(RGB(255,0,0));
        pDC->SetBkColor(RGB(0,0,0));
        if((m_x>=rect.right)||(m_y>=rect.bottom-20))
        { m_x=0;
        m_y=0;
          }
        pDC->TextOut(m_x,m_y,\"动画\");
         }
        2. 在OnTimer函数中,添加以下代码:
           if (nIDEvent == 1)
          {
          m_x+=5;
          m_y+=5;
          Draw();
           }
         else CWnd::OnTimer(nIDEvent);it

       

       

      MFC中 CStatic类(静态控件类)

      【说明】CStatic类提供了一个Windows静态控件的功能。一个静态控件能够用来显示一个文本字符串、方框、矩形、图标、光标、位图或加强的图元文件。它能够被用来做为标签、方框或用来分隔其它的控件。静态控件一般不接收输入,也不提供输出;可是,若是它具备SS_NOTIFY风格,则它能够通知其父有关设备点击的消息。建立一个静态控件分两步。首先,调用构造函数来构造一个CStatic类的对象,而后调用成员函数Create来建立此静态控件并将它分配给当前的CStatic类的对象。若是你是在一个对话框中建立了一个静态控件(经过一个对话框资源),则当用户关闭这个对话框时, CStatic类的对象被自动销毁。若是你是在一个窗口中建立了一个CStatic类的对象,则可能须要你本身来销毁它。在一个窗口的堆栈中建立的CStatic类的对象将自动被销毁。若是你是使用new函数在堆中创建CStatic类的对象,则当你使用完后,必须调用delete来销毁这个CStatic类的对象。【库 名】【成员函数】(1)BOOL Create(LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);【返回值】若是本成员函数调用成功则返回非零值;不然返回0。【参 数】lpszText指定要放置在静态控件中的文本。若是是NULL,则表示没有文本是可见的。dwStyle指定静态控件的窗口风格。如下任何静态控件风格的组合均可以用于这个控件。SS_BITMAP指定在静态控件中显示一个被定义在资源文件中的位图。该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸。SS_BLACKFRAME创建一个黑色的边框。SS_BLACKRECT创建一个黑色的矩形。SS_CENTER使文字在静态控件中水平居中。SS_CENTERIMAGE当静态控件用于显示文本时,该风格将使文本在静态控件中垂直居中。当静态控件用于显示位图或图标时,该风格将使位图或图标在静态控件中垂直居中,当位图或图标小于静态控件时,静态控件将使用位图或图标左上角的点的颜色填充空白处。SS_ENHMETAFILE指定在静态控件中显示一个加强型图元文件。该风格将不会忽略静态控件的高度和宽度,而图元文件将调节自身的大小来适应静态控件的尺寸。SS_ETCHEDFRAME创建一个浮雕边框。SS_ETCHEDHORZ创建一个边框,并将顶端边框设置为浮雕风格。SS_ETCHEDVERT创建一个边框,并将左侧边框设置为浮雕风格。SS_GRAYFRAME创建一个灰色的边框。SS_GRAYRECT创建一个灰色的矩形。SS_ICON指定在静态控件中显示一个被定义在资源文件中的图标。该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸。SS_LEFT使文字在静态控件中左对齐。SS_LEFTNOWORDWRAP在缺省状况下,静态控件把’\n’和’\t’都做为换行标记。只有在设置本风格后,静态控件才把’\t’看做是制表键(缺省时制表键的宽度为8个字符的宽度)。SS_NOPREFIX该标志表示终止对前缀字符的处理。一般,本成员函数将前缀助记符’&’解释为一个指令,即在’&’后面的字符下面划一下划线。而且将’&&’解释成一个单个的’&’指令。经过指令指定该标志,这种处理就再也不进行了。SS_NOTIFY在缺省状况下,静态控件是不响应鼠标事件的。只有在设置该风格后,当用户单击静态控件时,静态控件才向父窗口发送STN_CLICKED通知。SS_OWNERDRAW在指定该风格后,当静态控件在视觉外观发生变化时,该静态控件的属主窗口将响应WM_DRAWITEM消息。SS_RIGHT使文字在静态控件中左对齐。SS_SIMPLE只显示一行文本,文本不能被剪切或替换(父窗口不能处理CTLCOLOR消息)。SS_SUNKEN设置一个下沉的静态控件,当静态控件为一个方框时,方框的四边下沉;当静态控件为一个矩形时,整个矩形下沉。SS_USERITEM创建一个用户自定义项目。SS_WHITEFRAME创建一个白色的边框。SS_WHITERECT创建一个白色的矩形。rect指定静态控件的位置和大小。它能够是一个RECT结构类型的数据或一个CRect类的对象。pParentWnd指定CStatic类的对象的父窗口,一般是一个CDialog类的对象。它不能是NULL。nID = 0xffff指定静态控件的控件标识。【注释】在使用静态控件显示文本并且没有设置SS_LEFTNOWORDWRAP风格时,’\n’和’\t’都忧患行的做用。二者的区别是在一行文本的长度大于静态控件的宽度时使用’\n’换行将使该行文本的下一行也为空行,但使用’\t’则无此现象。(2)CStatic();【注 释】构造一个空的CStatic类的对象。(3)HBITMAP GetBitmap() const;【返回值】返回一个当前位图的句柄,若是没有设置位图,则返回NULL。【注释】此成员函数用来获取先前用成员函数SetBitmap设置的与CStatic类的对象关联的位图句柄。(4)HCURSOR GetCursor();【返回值】返回一个当前图标句柄。若是没有设置图标则返回NULL。【注释】此成员函数用来获取先前用成员函数SetCursor设置的与CStatic类的对象关联的光标句柄。(5)HENHMETAFILE GetEnhMetaFile() const;【返回值】返回一个当前加强图元文件句柄。若是没有设置加强的图元文件则返回NULL【注释】此成员函数用来获取先前用成员函数SetEnhMetaFile设置的与CStatic类的对象关联的加强的图元文件句柄。(6)HICON GetIcon();【返回值】返回一个当前图标句柄。若是没有设置加强的图标则返回NULL。【注释】此成员函数用来获取先前用成员函数SetIcon设置的与CStatic对象关联关联的图标句柄。(7)HBITMAP SetBitmap(HBITMAP hBitmap) const;【返回值】返回先前与此静态控件关联的位图的句柄。若是没有与此静态控件关联的位图,则返回NULL。【参 数】hBitmap要绘制在此静态控件中的位图句柄。【注释】此成员函数用来将一个新的位图与此静态控件关联。这个位图将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,而且此静态控件将根据位图的大小来调整尺寸。使用此成员函数必须设置风格SS_BITMAP。(8)HCURSOR SetCursor(HCURSOR hCursor);【返回值】返回先前与此静态控件关联的光标的句柄。若是没有与此静态控件关联的光标,则返回NULL。【参 数】hCursor要绘制在此静态控件中的光标句柄。【注释】此成员函数用来将一个新的光标与此静态控件关联。这个光标将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,而且此静态控件将根据光标的大小来调整尺寸。使用此成员函数必须设置风格SS_ICON。(9)HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);【返回值】返回先前与此静态控件关联的加强图元文件的句柄。若是没有与此静态控件关联的加强图元文件,则返回NULL。【参 数】hMetaFile要绘制在此静态控件中的加强图元文件句柄。【注释】此成员函数用来将一个新的加强图元文件与此静态控件关联。这个加强图元文件将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,而且此静态控件将根据加强图元文件的大小来调整尺寸。使用此成员函数必须设置风格SS_ENHMETAFILE。(10)HICON SetIcon(HICON hIcon);【返回值】返回先前与此静态控件关联的图标的句柄。若是没有与此静态控件关联的图标,则返回NULL。【参 数】hIcon要绘制在此静态控件中的图标句柄。【注释】此成员函数用来将一个新的图标与此静态控件关联。这个图标将被自动绘制在此静态控件中。缺省的,它将被绘制在左上角,而且此静态控件将根据图标的大小来调整尺寸。使用此成员函数必须设置风格SS_ICON。

相关文章
相关标签/搜索