較舊版本作業系統的 CImage 限制
許多CImage函式只能使用較新版本的 Windows: Windows 95/98 或 Windows NT 4.0 或 Windows 2000。 這篇文章說明版本限制的某些方法。
CImage::PlgBlt 和 CImage::MaskBlt 使用只是 Windows NT 4.0 或更新版本。 他們將無法執行在 Windows 95/98 或更新版本的應用程式。
CImage::AlphaBlend 和 CImage::TransparentBlt 請與唯一的 Windows 2000 或更新版本和 Windows 98 (含) 以後,因為您必須連結使用這些方法的 msimg32.lib。 (此文件庫是只提供給應用程式執行 Windows 2000 或更新及 Windows 98 或更新版本)。
您可以包含AlphaBlend和TransparentBlt從不會被呼叫這些方法時,才會在 Windows 95 或 Windows NT 4.0 執行的應用程式中。 如果您的應用程式包含這些方法,而且必須在舊版作業系統上執行,您必須使用連結器的 /delayload 延遲載入的 msimg32.lib。 只要您的應用程式不會呼叫這些方法 Windows NT 4.0 或 Windows 95 下執行時,它不會嘗試載入 msimg32.lib。 您可以檢查是否已可使用的投影片支援CImage::IsTransparencySupported方法。
範例
if (CImage::IsTransparencySupported())
{
// Safe to call CImage::AlphaBlend and CImage::TransparentBlt
}
else
{
// Transparency not supported. Fall back to something else.
}
若要編譯的應用程式,都會呼叫這些方法,插入一個 # 以定義之前包括任何系統標頭,指出 Windows 版本為等於或大於 5.0 # _WIN32_WINNT 陳述式:
#define _WIN32_WINNT 0x0501
如果您的應用程式不需要在早於 Windows 2000 或 Windows 98 作業系統上執行,您可以直接連接至 msimg32.lib 而不需要使用 /delayload。
CImage::Draw 與 Windows NT 4.0 或 Windows 95 一樣,搭配 Windows 2000 及 Windows 98 時的行為不同。
如果您編譯您的應用程式以 _WIN32_WINNT 集合值小於 0x0500, 繪製工作,但它將不會處理自動在執行 Windows 2000 及 Windows 98 或更新規格的系統上的透明度。
如果您編譯您的應用程式與設定為 0x0500 的 _WIN32_WINNT 或更大, 繪製將會處理自動在執行 Windows 2000 或 Windows 98 或更新規格的系統上的透明度。 它也可使用,但不透明度的支援,並且 Windows NT 4.0 或 Windows 95; 不過,您必須使用 /delayload 延遲載入的 msimg32。LIB 與上述的AlphaBlend和TransparentBlt。