我用Visual Studio 2008写了一个屏幕保护程序,编译没有问题,但是在执行时发生“无法定位程序输入点ChangeWindowMessageFilter于动态链接库USER32.dll上。”错误,请有过类似经验的大侠给点帮助。
----源码如下-----
#include <windows.h>
#include "resource.h"
#include <commctrl.h>#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"Scrnsave.lib")LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
// 从注册表中获取屏幕保护程序的设置信息
// 创建一个计时器
// 处理其它的初始化工作
return TRUE;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hWnd, &ps);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(0x33, 0xcc, 0));
TextOut(hDC, 150, 150, "www.poroco.com.cn", 15);
EndPaint(hWnd, &ps);
break;
}
case WM_TIMER:
// 处理绘制工作
return TRUE;
case WM_DESTROY:
// 销毁计时器
// 处理其它销毁工作
return TRUE;
default:
return DefScreenSaverProc(hWnd, message, wParam, lParam);
}
return FALSE;
} BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
switch ( message )
{
case WM_INITDIALOG:
// 创建设置对话框并初始化各控件值
return TRUE;
case WM_COMMAND:
if ( LOWORD( wParam ) == IDOK )
{
// 将用户的输入保存到注册表中
EndDialog( hDlg, LOWORD( wParam ) );
return TRUE;
}
else if( LOWORD( wParam ) == IDCANCEL )
{
EndDialog( hDlg, LOWORD( wParam ) );
return TRUE;
}
break;
}
return FALSE;
} BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
// 注册特殊窗口类或自定义窗口类
return TRUE;
}
----源码如下-----
#include <windows.h>
#include "resource.h"
#include <commctrl.h>#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"Scrnsave.lib")LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
// 从注册表中获取屏幕保护程序的设置信息
// 创建一个计时器
// 处理其它的初始化工作
return TRUE;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hWnd, &ps);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(0x33, 0xcc, 0));
TextOut(hDC, 150, 150, "www.poroco.com.cn", 15);
EndPaint(hWnd, &ps);
break;
}
case WM_TIMER:
// 处理绘制工作
return TRUE;
case WM_DESTROY:
// 销毁计时器
// 处理其它销毁工作
return TRUE;
default:
return DefScreenSaverProc(hWnd, message, wParam, lParam);
}
return FALSE;
} BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
switch ( message )
{
case WM_INITDIALOG:
// 创建设置对话框并初始化各控件值
return TRUE;
case WM_COMMAND:
if ( LOWORD( wParam ) == IDOK )
{
// 将用户的输入保存到注册表中
EndDialog( hDlg, LOWORD( wParam ) );
return TRUE;
}
else if( LOWORD( wParam ) == IDCANCEL )
{
EndDialog( hDlg, LOWORD( wParam ) );
return TRUE;
}
break;
}
return FALSE;
} BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
// 注册特殊窗口类或自定义窗口类
return TRUE;
}
解决方案 »
- 请教SOCKET通讯加密问题
- 网上下载的ocx控件写软件 在其他机器上打不开
- VC++6.0矢量图水印技术源码求购 价格面议
- vc odbc编程中如何使用crecordset实现多表嵌套查询
- 想外发这么一个项目,请大家给点意见
- 关于核心对象计数?
- 怎么实现把程序加到windows系统程序的菜单中
- 谁知道网上直播是用什么技术作的?
- 救命!关于Win32 dll,问题多多,up有分
- 结构体里有整形数据时,发送接受是否要考虑字节序问题?
- 大家好,我用ON_NOTIFY_RANGE时遇到了一个问题,上网搜发现一个老外和我一样的情况,而且表达的很清楚,直接贴过来了,请大虾们指教一下
- 关于图像二值化的开发,感兴趣的进来一下
HINSTANCE hinstLib = LoadLibrary(_T("user32.dll"));
if(hinstLib)
{
typedef BOOL (WINAPI *MYFUNC)(__in UINT,__in DWORD);
MYFUNC fpFun = NULL;
fpFun = (MYFUNC)GetProcAddress(hinstLib,"ChangeWindowMessageFilter");
if(fpFun)
{
fpFun(WM_DROPFILES, MSGFLT_ADD);
fpFun(WM_COPYDATA, MSGFLT_ADD);
fpFun(0x0049, MSGFLT_ADD);
} FreeLibrary(hinstLib);
}
在 pragma comment (lib, 中采用全路径