UpdateLayeredWindow调用失败有关问题

UpdateLayeredWindow调用失败问题.
bRet=   ::UpdateLayeredWindow(m_hWnd,//主窗口的HWND
    hdcScreen,//主窗口的HDC
    &ptWinPos,//主窗口的左上角的POINT
    &sizeWindow,//主窗口的SIZE
    m_hdcMemory,//含背景图的HDC
    &ptSrc,//图片从主窗口开始贴的POINT
    0,//要透明的COLOR(这里不是COLOR透明,当然不管)
    &m_Blend,//主窗口透明度
    2//标记位,2为允许半透明的窗体,1为COLOR透明,3为不透明
    );
if(bRet   ==   false)
{
//取得GetLastError()函数返回的错误代码的解释信息
LPVOID   lpMsgBuf;
FormatMessage(  
FORMAT_MESSAGE_ALLOCATE_BUFFER   |  
FORMAT_MESSAGE_FROM_SYSTEM   |  
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
0x485, //错误代码
MAKELANGID(LANG_NEUTRAL,   SUBLANG_DEFAULT),   //   Default   language
(LPTSTR)   &lpMsgBuf,
0,
NULL  
);
AfxMessageBox((LPCTSTR)lpMsgBuf);
//   Free   the   buffer.
LocalFree(   lpMsgBuf   );

AfxMessageBox( "UpdateLayeredWindow   Error ");
}

如上.程序在有些机器上运行函数返回失败.GetLastError提示是“找不到函数相关的库文件”,大概10台机器里有2台是这个错误.而且都是XP的操作系统.使用VC8编译的程序,请问为什么这个函数会有这样的问题?看MSDN上说2000以上的系统就支持的.

------解决方案--------------------
是不是这个api又调用了别的api,出错出在内部了
------解决方案--------------------
不太可能
------解决方案--------------------
硬件都是一样的么
------解决方案--------------------
晕, 很晕的问题, mark.
------解决方案--------------------
是不是组件没能正确注册?