65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 PPC 2002 中的非文档化 API 加载图像

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.72/5 (15投票s)

2002 年 8 月 13 日

CPOL
viewsIcon

174378

本文描述了一个未文档化的 API,它允许您在 Pocket PC 2002 下从文件中加载图像(bmp、gif 等)。

引言

在 Windows 下加载图像通常是一个痛苦的过程,尤其是当图像格式为 JPEG、GIF 或 PNG 时。一直都有 Imgdecmp 库,它做得很好,但文档太少,也有些麻烦。前几天,我尝试使用 LoadImage 从我的设备加载位图,但不知何故,我一直收到“句柄无效”的错误。所以我搜索了随 PPC SDK 提供的 MFC 代码,希望能找到一段可以帮助我解决这个难题的代码。 

一连串的事情发生了。我突然在 aygshell.h 中发现了 HBITMAP SHLoadImageFile(LPCTSTR pszFileName)。Bingo!我突然发现了一个未文档化的 API!MSDN 中没有痕迹,在 Google 中搜索也没有结果!!从那时起,我已经尝试使用 gif 和 bmp,我想它对 jpeg 和 png 也会很好。这是一个代码示例...

// assuming code is in the OnDraw method of a view....

CBitmap bitmap;

// Attach the bitmap object to the HBITMAP returned by SHLoadImageFile
bitmap.Attach(SHLoadImageFile(_T("/My Documents/mcdonalds.gif")));

BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);

CDC bitmapDC;
bitmapDC.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = bitmapDC.SelectObject(&bitmap);

pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &bitmapDC, 
            0, 0, SRCCOPY);

bitmapDC.SelectObject(pOldBitmap);
bitmap.DeleteObject();

目前就到这里吧。

© . All rights reserved.