各位好
   MFC中,我需要在静态控件中显示位图,以提示系统状态,但是显示不出位图,static text反而是灰白色,不是位图;
   (想过直接用setwindow(ws_show),但是控件太多了,一个diaolog都放不下 >256  !!~)
   用的方法是:
   显示位图 
⑴ 使用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); 
运行该程序即可。 我的程序是:loadbitmap
HBITMAP Greenlight = (HBITMAP)::LoadImage( NULL, MAKEINTRESOURCE(IDB_lightg),IMAGE_BITMAP, 25, 25, LR_DEFAULTCOLOR );
HBITMAP Redlight  = (HBITMAP)::LoadImage( NULL, MAKEINTRESOURCE(IDB_lightr),IMAGE_BITMAP, 25, 25, LR_DEFAULTCOLOR );
判断输出状态
for( int i = 0 ; i <= 7 ; i++ )
{
for( int j = 0 ; j <=7 ; j++ )
{
CStatic   *p_iconwnd=(CStatic*)GetDlgItem( IDC_STATIC_IOI100+8*i+j);         p_iconwnd->ModifyStyle(0xF,SS_BITMAP| SS_CENTERIMAGE); //SS_BITMAP这里把静态控件弄为灰白色了,不要它又直接输出caption

if( checkioi1[i][j] ){  
 p_iconwnd->SetBitmap(Greenlight);
}
else{
p_iconwnd->SetBitmap(Redlight);
}
}
}
没有输出位图,大侠帮我看下 谢谢 我是菜鸟

解决方案 »

  1.   


    p_iconwnd->ModifyStyle(0xF,SS_BITMAP| SS_CENTERIMAGE); //ss_centerimage去掉 什么都没了
      

  2.   

    试过用picture control代替static text,type-bitmap
    结果输出为空 什么都没有
    CStatic  *p_iconwnd=(CStatic*)GetDlgItem( IDC_STATIC_IOI100+8*i+j);这个为真
    p_iconwnd->ModifyStyle(0xF,SS_BITMAP);执行了   dialog空if( checkioi1[i][j] ){ 
    p_iconwnd->SetBitmap(Greenlight); 

    else{ 
    p_iconwnd->SetBitmap(Redlight); 

    setbitmap没反应,没输出;另外上面的checkioi1[i][j]是在另一个cpp中ontimer 不断计算后的结果,我的位图输出不成功 不知道是不是跟
    ontimer里面不断刷新checkioi1[i][j]有关系。
    还是我的Bitmap没load成功大侠快出手吧 急死
      

  3.   

    试过用picture control代替static text,type-bitmap
    结果输出为空 什么都没有
    CStatic  *p_iconwnd=(CStatic*)GetDlgItem( IDC_STATIC_IOI100+8*i+j);这个为真
    p_iconwnd->ModifyStyle(0xF,SS_BITMAP);执行了   dialog空if( checkioi1[i][j] ){ 
    p_iconwnd->SetBitmap(Greenlight); 

    else{ 
    p_iconwnd->SetBitmap(Redlight); 

    setbitmap没反应,没输出;另外上面的checkioi1[i][j]是在另一个cpp中ontimer 不断计算后的结果,我的位图输出不成功 不知道是不是跟
    ontimer里面不断刷新checkioi1[i][j]有关系。
    还是我的Bitmap没load成功大侠快出手吧 急死
      

  4.   

    你可以考虑换一个类,比如CButtonST类来做,这个类可以直接显示位图