如何提取并保存图标资源
2006-07-23 11:30:38 来源:WEB开发网在OnPaint()涵数中加入下面代码用来具体显示提取出的图标或位图资源。
//根据左侧图标列表,利用OnPaint()来更新右侧相应图标
LPTSTR lpIconID;
HICON hIcon;
if((lpIconID=(LPTSTR)m_List.GetItemData(m_List.GetCurSel()))!=(LPTSTR)LB_ERR )
{
if(szOpenFileExtName=="exe"||szOpenFileExtName=="dll"||szOpenFileExtName=="icl")
{
hIcon=pIcons->GetIconFromInstance(EDII.hInstance,lpIconID);
CStatic* pStatic = (CStatic*) GetDlgItem(IDC_ICONS);
pStatic->SetIcon (hIcon);
}
}
2、 如何将提取出的图标资源保存为Ico或Bmp格式。
//保存图标资源为ICO或BMP格式文件
void CIconSnapDlg::OnButtonSaveas()
{
LPTSTR lpIconID;
CFileDialog fileDialog( FALSE,"*.ICO",NULL,NULL,"图标文件(*.ICO)|*.ICO|位图文件(*.BMP)|*.BMP||");
if (fileDialog.DoModal() == IDOK)
{
szSaveFileName=fileDialog.GetPathName();
szSaveFileExtName= fileDialog.GetFileExt ();
szSaveFileExtName.MakeLower ();
if(szOpenFileExtName=="exe"||szOpenFileExtName=="dll"||szOpenFileExtName=="icl")
if((lpIconID=(LPTSTR)m_List.GetItemData (m_List.GetCurSel()))!= (LPTSTR)LB_ERR)
lpIR=pIcons->ReadIconFromEXEFile (szOpenFileName,lpIconID);
if(szSaveFileExtName=="bmp")
{
if(lpIR!=NULL && m_List.GetCount ()>0)
{
BeginWaitCursor();
pIcons->IconImageToBMPFile (szSaveFileName,&lpIR->IconImages [0]);
EndWaitCursor();
}
else
MessageBox( "没有可保存的图标资源!", "错误", MB_OK );
}
else if(szSaveFileExtName=="ico")
{
if(lpIR!=NULL && m_List.GetCount ()>0)
{
BeginWaitCursor();
pIcons->WriteIconToICOFile (lpIR,szSaveFileName);
EndWaitCursor();
}
else
MessageBox( "没有可保存的图标资源!", "错误", MB_OK );
}
}
}
以上代码的详细实现,请在下载后源码后,仔细参看既可。
更多精彩
赞助商链接