亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++針對bmp格式解析實例

2020-01-26 15:14:09
字體:
來源:轉載
供稿:網友

本文實例講述了C++針對bmp格式解析的方法,分享給大家供大家參考。具體方法如下:

寫這代碼時,容易出現如下錯誤:
1. 忘了on_wm_paint()  一直在界面上畫不出來
2. 正確寫法

復制代碼 代碼如下:
BYTE* pBits = (BYTE*)lpBase + pbitmapFileHeader->bfOffBits;

寫成了 

復制代碼 代碼如下:
BYTE* pBits =  pbitmapFileHeader->bfOffBits;

這里主要是用了前面一篇中的CWnd框架。

.cpp源文件如下:

復制代碼 代碼如下:
#include "ReadBMP.h" 
#include "resource.h" 
#include <afxdlgs.h > 
 
CMyApp theApp; 
BOOL CMyApp::InitInstance() 

    m_pMainWnd = new CMainWindow; 
    m_pMainWnd->ShowWindow(m_nCmdShow); 
    return TRUE; //必須返回TRUE,否則不會進入消息循環,界面會直接退出 

 
//CMainWindow 
BEGIN_MESSAGE_MAP(CMainWindow, CWnd) 
ON_WM_CREATE() 
ON_WM_PAINT() 
ON_COMMAND(IDC_OPEN, OnOpen) 
END_MESSAGE_MAP() 
//構造函數 
CMainWindow::CMainWindow() 

    LPCTSTR lpszClassName = ::AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW, ::LoadCursorA(NULL, IDC_ARROW), (HBRUSH)(COLOR_3DFACE+1), theApp.LoadIcon(IDI_MAIN)); 
    CreateEx(WS_EX_CLIENTEDGE, lpszClassName, "xxx", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL); 

//析構函數 
CMainWindow::~CMainWindow() 

 

//消息映射函數 
int CMainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) 

    //OutputDebugString("oncreate"); 
    CClientDC dc(this); 
    m_hMemDC = ::CreateCompatibleDC(dc); 
    m_nWidth = 0; 
    m_nHeight = 0; 
    //設置菜單 
    HMENU hMenu = ::LoadMenuA(theApp.m_hInstance, (LPCSTR)IDR_MENU); 
    ::SetMenu(m_hWnd, hMenu); 
    return 0; 

 
void CMainWindow::OnNcDestroy( ) 

    delete this; 

void CMainWindow::OnDestroy() 

     

void CMainWindow::OnPaint() 

    CPaintDC dc(this); 
    ::BitBlt(dc, 0, 0, m_nWidth, m_nHeight, m_hMemDC, 0, 0, SRCCOPY); 

void CMainWindow::OnOpen() 

    CFileDialog dlg(TRUE); 
    if (IDOK != dlg.DoModal()) 
    { 
        return; 
    } 
    HANDLE  hFile = ::CreateFile(dlg.GetPathName(), GENERIC_READ , FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
    if (INVALID_HANDLE_VALUE == hFile) 
    { 
        return; 
    } 
    HANDLE  hFileMap = ::CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); 
    if (NULL == hFileMap) 
    { 
        return; 
    } 
    LPVOID lpBase = ::MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0); 
    if (NULL == lpBase) 
    { 
        return; 
    } 
    //從頭結構中取三個信息:1.bfOffBits位圖數據在文件中的起始位置,2.m_nWidth圖像的寬,3.m_nHeight圖像的高 
    BITMAPFILEHEADER* pbitmapFileHeader; 
    BITMAPINFO* pbitmapInfo; 
    pbitmapFileHeader = (BITMAPFILEHEADER*)lpBase; 
    if (pbitmapFileHeader->bfType != MAKEWORD('B','M')) 
    { 
        MessageBox("not bmp"); 
        ::UnmapViewOfFile(lpBase); 
        ::CloseHandle(hFileMap); 
        ::CloseHandle(hFile); 
    } 
    //DWORD bfOffBits = pbitmapFileHeader->bfOffBits; 
    BYTE* pBits = (BYTE*)lpBase + pbitmapFileHeader->bfOffBits; 
    pbitmapInfo = (BITMAPINFO*)((BYTE*)lpBase + sizeof(BITMAPFILEHEADER)); 
    m_nWidth = pbitmapInfo->bmiHeader.biWidth; 
    m_nHeight = pbitmapInfo->bmiHeader.biHeight; 
    //顯示BMP文件到內存設備 
    //得客戶區DC 
    CClientDC dc(this); 
    //創建與客戶區DC兼容的位圖 
    HBITMAP hBitmap = ::CreateCompatibleBitmap(dc, m_nWidth, m_nHeight); 
    if (hBitmap == 0) 
    { 
        return; 
    } 
    //位圖選入內存DC 
    ::SelectObject(m_hMemDC, hBitmap); 
 
    //圖像數據放到建立的DC中 
    ::SetDIBitsToDevice(m_hMemDC, 0, 0, m_nWidth, m_nHeight, 0, 0, 0, m_nHeight, pBits, pbitmapInfo, DIB_RGB_COLORS); 
 
    ::InvalidateRect(m_hWnd, NULL, TRUE); 
    ::DeleteObject(hBitmap); 
 
    ::UnmapViewOfFile(lpBase); 
    ::CloseHandle(hFileMap); 
    ::CloseHandle(hFile); 
 
}

.h頭文件如下:

復制代碼 代碼如下:
#include <afxwin.h> 
 
class CMyApp:public CWinApp 

public: 
    virtual BOOL InitInstance(); 
}; 
 
//CMainWindow 
class CMainWindow:public CWnd 

public: 
    CMainWindow(); 
    ~CMainWindow(); 
 
protected: 
    HDC m_hMemDC; //與客戶區兼容的內存DC句柄  
    UINT m_nWidth; //BMP的寬度 
    UINT m_nHeight; //BMP的高度 
     
    //消息映射 
    afx_msg void OnNcDestroy( ); 
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
    afx_msg void OnDestroy( ); 
    afx_msg void OnOpen(); 
    afx_msg void OnPaint(); 
    DECLARE_MESSAGE_MAP() 
};

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品劲爆视频| 亚洲国产成人爱av在线播放| 九九视频这里只有精品| 国外成人在线直播| 欧美另类极品videosbest最新版本| 97超碰蝌蚪网人人做人人爽| 最近2019年手机中文字幕| 日韩成人在线网站| 欧美成年人视频| 欧洲成人在线视频| 久久精品欧美视频| 插插插亚洲综合网| 亚洲精品久久久一区二区三区| 国产色婷婷国产综合在线理论片a| 欧美精品一区二区三区国产精品| 国产一区欧美二区三区| 伊人av综合网| 欧美日韩精品在线播放| 日韩免费高清在线观看| 日韩欧美在线观看视频| 国产精品女人久久久久久| 成人在线观看视频网站| 久久精品国产69国产精品亚洲| 亚洲第一天堂av| 国产欧美一区二区| 欧美一级视频一区二区| 欧美天堂在线观看| 亚洲欧洲美洲在线综合| 日韩在线视频导航| 日韩中文视频免费在线观看| 精品电影在线观看| 亚洲在线www| 亚洲a一级视频| 国产精品免费电影| 国产日韩欧美中文在线播放| 国产精品第8页| 久久中文字幕一区| 久久久久亚洲精品国产| 超碰日本道色综合久久综合| 岛国av午夜精品| 欧美人与性动交a欧美精品| 中文字幕亚洲欧美日韩在线不卡| 国产精品午夜一区二区欲梦| 国产精品久久久久久久av大片| 欧美一区在线直播| 久久久精品美女| 中文字幕日韩欧美在线| 精品久久久久久中文字幕| 久久国产色av| 亚洲精品资源在线| 国内揄拍国内精品少妇国语| 91久久久精品| 久久夜精品va视频免费观看| 亚洲电影中文字幕| 国产精品日韩在线| 国产精品久久久久91| 久久天堂av综合合色| 欧美老少配视频| 亚洲午夜精品视频| 欧美电影在线观看网站| 日本欧美精品在线| 亚洲高清av在线| 久久成人这里只有精品| 国产日韩欧美中文| 91中文精品字幕在线视频| 国产九九精品视频| 日韩av影视在线| 国产精品久久久久91| 亚洲高清免费观看高清完整版| 久久久999国产精品| 亚洲欧洲美洲在线综合| 夜夜躁日日躁狠狠久久88av| 国产精品美女久久久久久免费| 久久久久久成人| 国产精品国产亚洲伊人久久| 精品国产老师黑色丝袜高跟鞋| 成人精品在线视频| 久久精品人人做人人爽| 国产一区二区三区四区福利| 欧美成aaa人片免费看| 尤物yw午夜国产精品视频| 国产精品夜间视频香蕉| 欧美成人免费va影院高清| 欧美国产日本高清在线| 性色av香蕉一区二区| 欧美激情久久久久久| 亚洲欧美国产制服动漫| 国产精品中文字幕久久久| 91中文字幕在线| 成人网在线观看| 亚洲综合精品一区二区| 久久国产加勒比精品无码| 懂色av中文一区二区三区天美| 久久精品青青大伊人av| 国产成人在线一区二区| 中文欧美日本在线资源| 狠狠色狠狠色综合日日小说| 亚洲欧美日韩精品久久| 亚洲电影第1页| 国模视频一区二区三区| 欧美成人免费小视频| 日韩精品中文字| 精品久久久香蕉免费精品视频| 亚洲一区国产精品| 性欧美视频videos6一9| 国产精品黄色影片导航在线观看| 97碰在线观看| 亚洲成年人影院在线| 在线播放国产精品| 亚洲精品av在线播放| 精品国产福利视频| 欧美专区在线播放| 亚洲欧洲午夜一线一品| 国产原创欧美精品| 亚洲色图25p| 欧美午夜激情小视频| 日韩高清电影免费观看完整版| 亚洲国产古装精品网站| 久久色精品视频| 色妞色视频一区二区三区四区| 国产精品九九久久久久久久| 国产欧美精品在线| 亚洲精品久久久一区二区三区| 欧美一区三区三区高中清蜜桃| 性欧美xxxx交| 欧美国产日韩在线| 美乳少妇欧美精品| 日韩成人在线视频| 成人h视频在线| 欧美人与性动交a欧美精品| 久久夜精品va视频免费观看| 欧美午夜宅男影院在线观看| 色噜噜亚洲精品中文字幕| 国产一区二区三区在线免费观看| 日韩视频免费观看| 26uuu国产精品视频| 国产97在线亚洲| 亚洲成人亚洲激情| 欧美激情视频网| 欧美性xxxxx| 欧美激情亚洲另类| 亚洲女人被黑人巨大进入| 欧美黄网免费在线观看| 欧美日韩在线看| 欧美日韩国产综合新一区| 国产精品一区二区久久久久| 日韩一区二区欧美| www.久久久久久.com| 欧美一区二区三区精品电影| 久久亚洲综合国产精品99麻豆精品福利| 亚洲欧洲在线观看| 色先锋资源久久综合5566| 92国产精品视频| 亚洲欧美精品中文字幕在线| 91亚洲人电影| 自拍亚洲一区欧美另类| 久久琪琪电影院| 亚洲美女喷白浆| 色先锋久久影院av| 亚洲伊人一本大道中文字幕| 中文字幕欧美精品日韩中文字幕| 国产精品久久久久999| 中文字幕精品久久| 精品欧美aⅴ在线网站|