求一将HICON句柄的资源保存为 ico文件的源码 保存为 bmp 也行,但我保存为bmp的时候,背景总是黑色的,vckbase上徐景周的一个程序也是,保存为bmp图片后,北京也是黑色的。我要的是,颜色一点都不变。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最好能存为icon.下面的代码我可以很容易动态的的显示一个ico文件HICON m_hIcon = (HICON)LoadImage( NULL, "c:\\11.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE ); HDC hdc = ::GetDC(m_hWnd); ::DrawIconEx(hdc, 50, 50, m_hIcon, 16, 16, 0, 0, DI_NORMAL ); ::ReleaseDC(m_hWnd, hdc); 哎,没有人会吗,我上codeguru上也去了,也是找不到答案 CSDN上好像有ICO文件格式说明吧,自己取图像数据以后按格式保存试试. 用IPicture.Save下面是保存bmp,同样的方法可以保存iconvoid savebmp(CBitmap& bmp){CPictureHolder picture;picture.CreateFromBitmap((HBITMAP)bmp, NULL, TRUE);LPPICTUREDISP pPictureDisp=picture.GetPictureDispatch();pPictureDisp->Release(); // must be releasedIStorage* pStg = 0; hr = ::StgCreateDocfile(L"c:\\picttest", STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_READWRITE, 0, &pStg); if(SUCCEEDED(hr)) { IStream* pStream = 0; hr = pStg->CreateStream(L"PICTURE", STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_READWRITE, 0, 0, &pStream); if(SUCCEEDED(hr)) { hr = pPictureDisp->SaveAsFile(pStream, TRUE, // save mem copy NULL); pStream->Release(); } pStg->Release(); } pPictureDisp->Release();} void SaveIcon(HICON hIconToSave, LPCTSTR sIconFileName){ if(hIconToSave==NULL || sIconFileName==NULL) return; //warning: this code snippet is not bullet proof. //do error check by yourself [masterz] PICTDESC picdesc; picdesc.cbSizeofstruct = sizeof(PICTDESC); picdesc.picType = PICTYPE_ICON ; picdesc.icon.hicon = hIconToSave; IPicture* pPicture=NULL; OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture); LPSTREAM pStream; CreateStreamOnHGlobal(NULL,TRUE,&pStream); LONG size; HRESULT hr=pPicture->SaveAsFile(pStream,TRUE,&size); char pathbuf[1024]; strcpy(pathbuf,sIconFileName); CFile iconfile; iconfile.Open(pathbuf, CFile::modeCreate|CFile::modeWrite); LARGE_INTEGER li; li.HighPart =0; li.LowPart =0; ULARGE_INTEGER ulnewpos; pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos); ULONG uReadCount = 1; while(uReadCount>0) { pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount); if(uReadCount>0) iconfile.Write(pathbuf,uReadCount); } pStream->Release(); iconfile.Close();} vc2010连接access2003 MFC 怎样实现聚合 一个很简单的问题!!~~ vc里改变堆栈默认大小的地方在什么地方? 请问如何在焦点回到窗口的时候,重画一边窗口上的控件? 请教数据帧接收的问题!大侠请进! 如何取消listctrl中选中的item !!300分寻解!!如何在Win2000下实现磁盘加密!(急) 公式N=945180/f;,希望高手帮我解决下945180怎么来的 关于VC++的mfc工程与类型为.EXE的COM组件的调用问题 智能卡编程需要什么?~~~急件~~~ 请大家帮我测试软件
HICON m_hIcon = (HICON)LoadImage( NULL, "c:\\11.ico",
IMAGE_ICON, 0, 0, LR_LOADFROMFILE ); HDC hdc = ::GetDC(m_hWnd);
::DrawIconEx(hdc, 50, 50, m_hIcon, 16, 16,
0, 0, DI_NORMAL );
::ReleaseDC(m_hWnd, hdc);
下面是保存bmp,同样的方法可以保存icon
void savebmp(CBitmap& bmp)
{
CPictureHolder picture;
picture.CreateFromBitmap((HBITMAP)bmp, NULL, TRUE);
LPPICTUREDISP pPictureDisp=picture.GetPictureDispatch();
pPictureDisp->Release(); // must be released
IStorage* pStg = 0; hr = ::StgCreateDocfile(L"c:\\picttest",
STGM_SHARE_EXCLUSIVE |
STGM_CREATE |
STGM_READWRITE,
0, &pStg);
if(SUCCEEDED(hr))
{
IStream* pStream = 0; hr = pStg->CreateStream(L"PICTURE",
STGM_SHARE_EXCLUSIVE |
STGM_CREATE |
STGM_READWRITE,
0, 0, &pStream);
if(SUCCEEDED(hr))
{
hr = pPictureDisp->SaveAsFile(pStream,
TRUE, // save mem copy
NULL);
pStream->Release();
}
pStg->Release();
}
pPictureDisp->Release();
}
{
if(hIconToSave==NULL || sIconFileName==NULL)
return;
//warning: this code snippet is not bullet proof.
//do error check by yourself [masterz]
PICTDESC picdesc;
picdesc.cbSizeofstruct = sizeof(PICTDESC);
picdesc.picType = PICTYPE_ICON ;
picdesc.icon.hicon = hIconToSave;
IPicture* pPicture=NULL;
OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture);
LPSTREAM pStream;
CreateStreamOnHGlobal(NULL,TRUE,&pStream);
LONG size;
HRESULT hr=pPicture->SaveAsFile(pStream,TRUE,&size);
char pathbuf[1024];
strcpy(pathbuf,sIconFileName);
CFile iconfile;
iconfile.Open(pathbuf, CFile::modeCreate|CFile::modeWrite);
LARGE_INTEGER li;
li.HighPart =0;
li.LowPart =0;
ULARGE_INTEGER ulnewpos;
pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos);
ULONG uReadCount = 1;
while(uReadCount>0)
{ pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount);
if(uReadCount>0)
iconfile.Write(pathbuf,uReadCount);
}
pStream->Release();
iconfile.Close();
}