/*---------------------------------
DIBFILE.C -- DIB File Functions
---------------------------------*/
#include "StdAfx.h"
#include "DibFile.h"
//////////////////////////////////
FileDialog::FileDialog()
{
m_ofn.lStructSize = sizeof (OPENFILENAME) ;
m_ofn.hwndOwner = NULL ;
m_ofn.hInstance = NULL ;
m_ofn.lpstrFilter = NULL ;
m_ofn.lpstrCustomFilter = NULL ;
m_ofn.nMaxCustFilter = 0 ;
m_ofn.nFilterIndex = 0 ;
m_ofn.lpstrFile = NULL ;// Set in Open and Close functions
m_ofn.nMaxFile = MAX_PATH ;
m_ofn.lpstrFileTitle = NULL ;// Set in Open and Close functions
m_ofn.nMaxFileTitle = MAX_PATH ;
m_ofn.lpstrInitialDir = NULL ;
m_ofn.lpstrTitle = NULL ;
m_ofn.Flags = 0 ;// Set in Open and Close functions
m_ofn.nFileOffset = 0 ;
m_ofn.nFileExtension = 0 ;
m_ofn.lpstrDefExt = NULL ;//TEXT("JPG")ppend this extension to the file name if the user fails to type an extension
m_ofn.lCustData = 0 ;
m_ofn.lpfnHook = NULL ;
m_ofn.lpTemplateName = NULL ;
}
BOOL FileDialog::GetFileOpenName(HWND hwnd,PTSTR pstrFileName,PTSTR pstrTitleName,LPCTSTR szFilter)
{
if(NULL==pstrFileName)
return FALSE;
LPCTSTR lpstrDefExt;
if(NULL!=szFilter)
{
lpstrDefExt=_tcschr(szFilter+_tcslen(szFilter)+1,'.');
if(NULL!=lpstrDefExt)
m_ofn.lpstrDefExt=lpstrDefExt+1;
}
m_ofn.hwndOwner = hwnd ;
m_ofn.lpstrFile = pstrFileName ;
m_ofn.lpstrFileTitle = pstrTitleName ;
m_ofn.lpstrFilter = szFilter ;
m_ofn.Flags = 0 ;
return GetOpenFileName (&m_ofn) ;
}
BOOL FileDialog::GetFileSaveName(HWND hwnd,PTSTR pstrFileName,PTSTR pstrTitleName,LPCTSTR szFilter)
{
if(NULL==pstrFileName)
return FALSE;
LPCTSTR lpstrDefExt;
if(NULL!=szFilter)
{
lpstrDefExt=_tcschr(szFilter+_tcslen(szFilter)+1,'.');
if(NULL!=lpstrDefExt)
m_ofn.lpstrDefExt=lpstrDefExt+1;
}
m_ofn.hwndOwner = hwnd ;
m_ofn.lpstrFile = pstrFileName ;
m_ofn.lpstrFileTitle = pstrTitleName ;
m_ofn.lpstrFilter = szFilter ;
m_ofn.Flags = OFN_OVERWRITEPROMPT ;
return GetSaveFileName (&m_ofn) ;
}
//////////////////////////////////////////
ColorDialog::ColorDialog()
{
m_cc.lStructSize=sizeof(CHOOSECOLOR);
m_cc.hwndOwner=NULL;
m_cc.hInstance=NULL;
m_cc.rgbResult=RGB(0,0,0);
m_cc.lpCustColors=NULL;
m_cc.Flags=CC_ANYCOLOR|CC_RGBINIT|CC_FULLOPEN;
m_cc.lCustData=NULL;
m_cc.lpfnHook=NULL;
m_cc.lpTemplateName=NULL;
}
BOOL ColorDialog::GetColorRef(HWND hwnd,COLORREF* prgbRet,COLORREF *lpCustColors)//lpCustColors个数为16个
{
if(NULL==prgbRet)
return FALSE;
m_cc.hwndOwner=hwnd;
m_cc.rgbResult=*prgbRet;
m_cc.lpCustColors=lpCustColors;
if(ChooseColor(&m_cc))
{
*prgbRet=m_cc.rgbResult;
return TRUE;
}
else
return FALSE;
}
//////////////////////////////////////////
BITMAPFILEHEADER * DibLoadImage (LPCTSTR pstrFileName)
{
BOOL bSuccess ;
DWORD dwFileSize, dwHighSize, dwBytesRead ;
HANDLE hFile ;
BITMAPFILEHEADER * pbmfh ;
hFile = CreateFile (pstrFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;
if (hFile == INVALID_HANDLE_VALUE)
return NULL ;
dwFileSize = GetFileSize (hFile, &dwHighSize) ;
if (dwHighSize)
{
CloseHandle (hFile) ;
return NULL ;
}
pbmfh = (BITMAPFILEHEADER *)malloc (dwFileSize) ;
if (!pbmfh)
{
CloseHandle (hFile) ;
return NULL ;
}
bSuccess = ReadFile (hFile, pbmfh, dwFileSize, &dwBytesRead, NULL) ;
CloseHandle (hFile) ;
if (!bSuccess || (dwBytesRead != dwFileSize)
|| (pbmfh->bfType != * (WORD *) "BM")
|| (pbmfh->bfSize != dwFileSize))
{
free (pbmfh) ;
return NULL ;
}
return pbmfh ;
}
BOOL DibSaveImage (LPCTSTR pstrFileName, BITMAPFILEHEADER * pbmfh)
{
BOOL bSuccess ;
DWORD dwBytesWritten ;
HANDLE hFile ;
hFile = CreateFile (pstrFileName, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) ;
if (hFile == INVALID_HANDLE_VALUE)
return FALSE ;
bSuccess = WriteFile (hFile, pbmfh, pbmfh->bfSize, &dwBytesWritten, NULL) ;
CloseHandle (hFile) ;
if (!bSuccess || (dwBytesWritten != pbmfh->bfSize))
{
DeleteFile (pstrFileName) ;
return FALSE ;
}
return TRUE ;
}
BITMAPFILEHEADER * DDBToDIB (HDC hdc, HBITMAP hBitmap,int BitCount)
{
BITMAP bm;
int iOffset, iSizeImage ;
BYTE *pBits;
BITMAPFILEHEADER *pbfh;
BITMAPINFO *pbi;
if(NULL==hBitmap)
return NULL;
GetObject(hBitmap,sizeof(BITMAP),&bm);
switch(BitCount)
{
case 1:
case 4:
case 8:
iOffset=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*(1<<BitCount);
break;
case 16:
case 24:
case 32:
iOffset=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
break;
default:
return NULL;
}
iSizeImage=(((bm.bmWidth*BitCount+31)/32)*4)*bm.bmHeight;
pbfh=(BITMAPFILEHEADER *)malloc(iOffset+iSizeImage);
if(NULL==pbfh)
return NULL;
pBits=(BYTE *)pbfh+iOffset;
pbi=(BITMAPINFO *)(pbfh+1);
pbfh->bfType=0x4D42;
pbfh->bfSize=iOffset+iSizeImage;
pbfh->bfReserved1=0;
pbfh->bfReserved2=0;
pbfh->bfOffBits=iOffset;
pbi->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
pbi->bmiHeader.biWidth=bm.bmWidth;
pbi->bmiHeader.biHeight=bm.bmHeight;
pbi->bmiHeader.biPlanes=1;
pbi->bmiHeader.biBitCount=BitCount;
pbi->bmiHeader.biCompression=BI_RGB;
pbi->bmiHeader.biSizeImage=iSizeImage;
pbi->bmiHeader.biXPelsPerMeter=0;
pbi->bmiHeader.biYPelsPerMeter=0;
if(BitCount<16)
{
pbi->bmiHeader.biClrUsed=pbi->bmiHeader.biClrImportant=(1<<BitCount);
}
else
{
pbi->bmiHeader.biClrUsed=pbi->bmiHeader.biClrImportant=0;
}
GetDIBits(hdc,hBitmap,0,bm.bmHeight,pBits,pbi,DIB_RGB_COLORS);
return pbfh;
}
HBITMAP CreateBitmapObjectFromDibFile (HDC hdc, LPCTSTR szFileName)
{
BITMAPFILEHEADER * pbmfh ;
BOOL bSuccess ;
DWORD dwFileSize, dwHighSize, dwBytesRead ;
HANDLE hFile ;
HBITMAP hBitmap ;
hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;
if (hFile == INVALID_HANDLE_VALUE)
return NULL ;
dwFileSize = GetFileSize (hFile, &dwHighSize) ;
if (dwHighSize)
{
CloseHandle (hFile) ;
return NULL ;
}
pbmfh = (BITMAPFILEHEADER *)malloc (dwFileSize) ;
if (!pbmfh)
{
CloseHandle (hFile) ;
return NULL ;
}
bSuccess = ReadFile (hFile, pbmfh, dwFileSize, &dwBytesRead, NULL) ;
CloseHandle (hFile) ;
if (!bSuccess || (dwBytesRead != dwFileSize)
|| (pbmfh->bfType != * (WORD *) "BM")
|| (pbmfh->bfSize != dwFileSize))
{
free (pbmfh) ;
return NULL ;
}
hBitmap = CreateDIBitmap (hdc,
(BITMAPINFOHEADER *) (pbmfh + 1),
CBM_INIT,
(BYTE *) pbmfh + pbmfh->bfOffBits,
(BITMAPINFO *) (pbmfh + 1),
DIB_RGB_COLORS) ;
free (pbmfh) ;
return hBitmap ;
}
HBITMAP CreateDibSectionFromDibFile (LPCTSTR szFileName)
{
BITMAPFILEHEADER bmfh ;
BITMAPINFO * pbmi ;
BYTE * pBits ;
BOOL bSuccess ;
DWORD dwInfoSize, dwBytesRead ;
HANDLE hFile ;
HBITMAP hBitmap ;
hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL) ;
if (hFile == INVALID_HANDLE_VALUE)
return NULL ;
bSuccess = ReadFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER),
&dwBytesRead, NULL) ;
if (!bSuccess || (dwBytesRead != sizeof (BITMAPFILEHEADER))
|| (bmfh.bfType != * (WORD *) "BM"))
{
CloseHandle (hFile) ;
return NULL ;
}
dwInfoSize = bmfh.bfOffBits - sizeof (BITMAPFILEHEADER) ;
pbmi = (BITMAPINFO*)malloc (dwInfoSize) ;
bSuccess = ReadFile (hFile, pbmi, dwInfoSize, &dwBytesRead, NULL) ;
if (!bSuccess || (dwBytesRead
没有合适的资源?快使用搜索试试~ 我知道了~
异形窗口 无任务栏 无标题栏 无边框 支持动态透明Gif图片 可以打开其他图片来改变窗口形状
共21个文件
h:5个
cpp:3个
gif:2个
4星 · 超过85%的资源 需积分: 46 179 下载量 34 浏览量
2010-08-07
14:47:03
上传
评论
收藏 288KB RAR 举报
温馨提示
程序浏览图像用的是GDI+库。 程序默认打开时会播放内置的一个Gif动态图片,窗口形状根据图片动态调整。 你可以打开其他图片以改变窗口的异形形状。 程序界面是一个三无窗口:无任务栏、无标题栏、无边框。 为方便控制,程序具有托盘图标,且托盘图标随Gif图像动态改变。 程序异形窗口用的函数是SetLayeredWindowAttributes,把某种颜色设为全透明。 并且该透明颜色在程序中有两种方法进行设置: 1.打开通用颜色对话框,选择一种颜色; 2.在窗口上双击鼠标,双击处的颜色作为透明色; 附件中的“虫子.gif”图片可以打开试试~~虫子好像在屏幕上爬似的~~ 程序附带浏览图片和截屏功能。 注意:保存gif图片只能保存单帧。本来想用Gdi+的SaveAdd方法保存多帧,却发现老是失败并返回Win32Error错误。 网上一搜发现原来Gdi+不支持Gif多帧的保存功能,只支持tiff的多帧保存,而且tiff多帧保存后也没有时间戳。 所以只得放弃。 左键可以拖动窗口移动。 程序只允许运行一个实例。注册了两个热键:Shift+F8和Shift+F9。 有问题联系:hastings1986@163.com
资源推荐
资源详情
资源评论
收起资源包目录
Transparent.rar (21个子文件)
Transparent.aps 40KB
背景.gif 16KB
Implement.cpp 21KB
icon.ico 2KB
Cross.cur 2KB
Transparent.rc 5KB
XPStyle.manifest 556B
Transparent.exe 104KB
Transparent.dsp 5KB
HasPtr.h 926B
虫子.gif 150KB
resource.h 1KB
main.cpp 18KB
Transparent.ncb 89KB
StdAfx.h 569B
Transparent.plg 256B
Transparent.opt 49KB
Implement.h 2KB
DibFile.h 5KB
DibFile.cpp 29KB
Transparent.dsw 530B
共 21 条
- 1
hastings
- 粉丝: 119
- 资源: 55
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页