91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

演示了DIB文件的讀入、保存和顯示,剔除一些特殊情況的考慮,主要關注整個DIB的操作流程,對DIB操作入門和提高均有幫助。

資源截圖

代碼片段和文件信息

#include?
#include?“DibOperate.h“

static?OPENFILENAME?ofn;

void?DibFileDlgInit(HWND?hwnd)
{
static?TCHAR?szFilter[]?=?TEXT(“Bitmap?Files(*.BMP)\0*.bmp\0“)
TEXT(“All?Files(*.*)\0*.*\0\0“);

ofn.lStructSize =?sizeof(OPENFILENAME); //結構體大小
ofn.hwndOwner =?hwnd; //父窗口句柄
ofn.hInstance =?NULL;
ofn.lpstrFilter =?szFilter; //文件后綴名過濾選項
ofn.lpstrCustomFilter =?NULL;
ofn.nMaxCustFilter =?0;
ofn.nFilterIndex =?0;
ofn.lpstrFile =?NULL; //打開文件全路徑保存位置
ofn.nMaxFile =?MAX_PATH; //打開文件全路徑長度
ofn.lpstrFiletitle =?NULL; //打開文件名保存位置
ofn.nMaxFiletitle =?MAX_PATH; //打開文件名長度
ofn.lpstrInitialDir =?TEXT(“.\\“); //打開的初始文件夾
ofn.lpstrtitle =?NULL; //打開的文件對話框標題
ofn.Flags =?0;
ofn.nFileOffset =?0;
ofn.nFileExtension =?0;
ofn.lpstrDefExt =?TEXT(“bmp“); //默認的文件后綴
ofn.lCustData =?0;
ofn.lpfnHook =?NULL;
ofn.lpTemplateName =?NULL;
}

BOOL?DibGetOpenFile(HWND?hwnd?PTSTR?pstrFileName?PTSTR?pstrtitleName)
{
ofn.hwndOwner =?hwnd;
ofn.lpstrFile =?pstrFileName;
ofn.lpstrFiletitle =?pstrtitleName;
ofn.Flags =?0;

return?GetOpenFileName(&ofn);
}

BOOL?DibGetSaveFile(HWND?hwnd?PTSTR?pstrFileName?PTSTR?pstrtitleName)
{
ofn.hwndOwner =?hwnd;
ofn.lpstrFile =?pstrFileName;
ofn.lpstrFiletitle =?pstrtitleName;
ofn.Flags =?OFN_OVERWRITEPROMPT;

return?GetSaveFileName(&ofn);
}

BOOL?DibTotalLoad(PTSTR?szBmpFile?
??PBITMAPFILEHEADER?*ppbmfh
??PBITMAPINFO?*ppbmi
??PBYTE?*ppBits
??PLONG?pBmpWidth
??PLONG?pBmpHeight)
{
HANDLE hFile;
DWORD dwFileSize?dwBytesRead;
BOOL bSuccess;

//打開文件
hFile?=?CreateFile(?szBmpFile?
GENERIC_READ?FILE_SHARE_READ?NULL?
OPEN_EXISTING?FILE_FLAG_SEQUENTIAL_SCAN?NULL);
if?(INVALID_HANDLE_VALUE?==?hFile)
{
return?FALSE;
}

//判斷BMP文件大小(所有部分)
dwFileSize?=?GetFileSize(hFile?NULL);

//分配對應大小內存用于保存磁盤BMP文件內容
*ppbmfh?=?malloc(dwFileSize);
if?(!(*ppbmfh))
{
CloseHandle(hFile);
return?FALSE;
}

//讀入文件內容
bSuccess?=?ReadFile(hFile?*ppbmfh?dwFileSize?&dwBytesRead?NULL);
CloseHandle(hFile);

//校驗讀入是否正確和文件是否為BMP文件
if?(!bSuccess?||
(dwBytesRead?!=?dwFileSize)?||
(*ppbmfh)->bfType?!=?*(WORD?*)“BM“)
{
free(*ppbmfh);
return?FALSE;
}

//計算剩余的返回參數
*ppbmi?=?(PBITMAPINFO)(*ppbmfh+1);
*ppBits?=?(PBYTE)(*ppbmfh)?+?(*ppbmfh)->bfOffBits;
*pBmpWidth?=?(*ppbmi)->bmiHeader.biWidth;
*pBmpHeight?=?(*ppbmi)->bmiHeader.biHeight;

return?TRUE;
}

BOOL?DibTotalSave(PTSTR?szBmpFile?PBITMAPFILEHEADER?pbmfh)
{
BOOL bSuccess;
DWORD dwBytesWrite;
HANDLE hFile;

//打開要寫入的文件
hFile?=?CreateFile(szBmpFile
???GENERIC_WRITE?0?NULL
???CREATE_ALWAYS?FILE_ATTRIBUTE_NORMAL?NULL);
if?(INVALID_HANDLE_VALUE?==?hFile)
{
return?FALSE;
}

//寫入文件
bSuccess?=?WriteFile(hFile?pbmfh?pbmfh->bfSize?&dwBytesWrite?NULL);
CloseHandle(hFile);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-05-19?16:53??DIB的讀入、保存和顯示\
?????目錄???????????0??2014-05-19?16:53??DIB的讀入、保存和顯示\DIB\
?????文件??????579534??2014-05-19?15:24??DIB的讀入、保存和顯示\DIB\1.bmp
?????文件??????415854??2014-05-19?15:25??DIB的讀入、保存和顯示\DIB\2.bmp
?????文件????????2080??2014-05-19?15:56??DIB的讀入、保存和顯示\DIB\DIB.rc
?????文件????????4154??2014-05-19?15:57??DIB的讀入、保存和顯示\DIB\DIB.vcproj
?????文件????????1417??2014-05-19?16:53??DIB的讀入、保存和顯示\DIB\DIB.vcproj.wenzhou-PC.wenzhou.user
?????文件????????7835??2014-05-19?16:52??DIB的讀入、保存和顯示\DIB\DibOperate.c
?????文件?????????902??2014-05-19?16:06??DIB的讀入、保存和顯示\DIB\DibOperate.h
?????文件????????5885??2014-05-19?16:43??DIB的讀入、保存和顯示\DIB\Main.c
?????文件????????1010??2014-05-19?15:56??DIB的讀入、保存和顯示\DIB\resource.h
?????文件?????????875??2014-05-19?13:33??DIB的讀入、保存和顯示\DIB的讀入、保存和顯示.sln

評論

共有 條評論