VC skills 5

采用 ATL 修改桌面背景
BOOL  SetWallpaper(CString   &strPicFile,   DWORD   dwstyle)  
{
 HRESULT   hr;  
 CComPtr< IActiveDesktop > pIAD ;  // 智能指针, 自动释放

 // 创建接口的实例  
 hr = CoCreateInstance ( CLSID_ActiveDesktop,    
       NULL,
       CLSCTX_INPROC_SERVER,
       IID_IActiveDesktop,
       (void**)&pIAD
       );  
 if(!SUCCEEDED(hr))  
  return   FALSE;  

 // 将文件名改为宽字符串,这是IActiveDesktop::SetWallpaper的要求  
 WCHAR    wszWallpaper   [MAX_PATH];  
 LPTSTR   lpStr = strPicFile.GetBuffer( strPicFile.GetLength() );  
 MultiByteToWideChar(CP_ACP,
      0,
      lpStr,
      -1,
      wszWallpaper,
      MAX_PATH);   
 strPicFile.ReleaseBuffer();  

 //设置墙纸  
 hr   =   pIAD->SetWallpaper(wszWallpaper, 0);  
 if(!SUCCEEDED(hr))  
  return   FALSE;  

 //设置墙纸的样式  
 WALLPAPEROPT   wpo;
 wpo.dwSize = sizeof(wpo);  
 wpo.dwStyle = dwstyle;  
 hr = pIAD->SetWallpaperOptions(&wpo, 0);  
 if(!SUCCEEDED(hr))  
  return   FALSE;

 //应用墙纸的设置  
 hr = pIAD->ApplyChanges(AD_APPLY_ALL);  
 if(!SUCCEEDED(hr))  
  return   FALSE;

 return   TRUE;  
}

ListCtrl 的使用技巧
-----------------------------------------------------------------------
设置 ListCtrl 的 CheckBox 属性
m_ctrllist.SetExtendedStyle( m_ctrllist.GetExtendedStyle()
        | LVS_EX_CHECKBOXES   // 设置 checkBox 属性
        | LVS_EX_FULLROWSELECT  // 整行选择属性
        | LVS_EX_GRIDLINES   // 分割线属性
        | LVS_EX_SUBITEMIMAGES ); // 每项可以添加图片属性

操作 checkBox 是否被钩选
 ListView_SetCheckState
 ListView_GetCheckState

给指定列添加图片
假设现在有 2 列,我们插入一行

注意, 在插入一行时, 必须首先调用 InsertItem 插入第一项,
然后才能调用 SetItem 或 SetItemText

 LVITEM Item;
 
    // 插入一行的第 1 列
 Item.iItem = 0;
 Item.mask = LVIF_TEXT |LVIF_IMAGE;
 Item.iSubItem = 0 ;
 Item.iImage  = 0;
 Item.pszText = "flower.jpg" ;
 m_ctrllist.InsertItem( &Item );


 // 插入一行的第 2 列
 Item.mask = LVIF_IMAGE | LVIF_TEXT ;
 Item.iSubItem = 1 ;
 Item.iImage  = 1;
 Item.pszText = "100";

 if ( FALSE == m_ctrllist.SetItem(&Item) )
 {
  return FALSE;
 }

 给ListCtrl 添加图片:

 CImageList m_imageListSmall ;      // 创建 ImageList 对象

 m_imageListSmall.Create(16,16,ILC_COLOR32,1,1);  // 指定大小和初始大小
 m_imageListSmall.Add( AfxGetApp()->LoadIcon( IDI_ICON1) ); // 添加图片
 m_imageListSmall.Add( AfxGetApp()->LoadIcon( IDI_ICON2) );

 m_ctrllist.SetImageList( &m_imageListSmall , LVSIL_SMALL ) ; // 绑定一起

你可能感兴趣的:(ListView,image,server,null,Path,imagelist)