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






4.72/5 (15投票s)
本文描述了一个未文档化的 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();
目前就到这里吧。