在DLL中定义的消息,编译时提示该消息没定义,咋回事?(50分)

  • 主题发起人 主题发起人 nullbert30
  • 开始时间 开始时间
N

nullbert30

Unregistered / Unconfirmed
GUEST, unregistred user!
//////////////////////////////////////////////////////////////////////////////
mydll.cpp:
/////////////////////////////////////////////////////////////////////////////
#define UWM_MOUSEHOOK_MSG "{B30856F0-D3DD-11d4-A00B-006067718D04}"

HWND hMainWnd=NULL;
UINT UWM_MOUSEHOOK;

BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
UWM_MOUSEHOOK=RegisterWindowMessage(UWM_MOUSEHOOK_MSG);
}

LRESULT Keyboardproc(int nCode,WPARAM wParam,LPARAM lParam)
{
PostMessage(hMainWnd,UWM_MOUSEHOOK,wParam,lParam);
return CallNextHookEx(NULL,nCode,wParam,lParam);
}

//////////////////////////////////////////////////////////////////////////////
MainFrm.cpp:
//////////////////////////////////////////////////////////////////////////////
#pragma comment(lib,"mydll.lib")

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
//}}AFX_MSG_MAP
ON_REGISTERED_MESSAGE(UWM_MOUSEHOOK,OnMyMouseMove)
END_MESSAGE_MAP()

编译提示UWM_MOUSEHOOK没定义,咋办呢?谢谢!
 
因为UWM_MOUSEHOOK是定义别名,你必须重新定义。
 
重新定义该怎样定义?
是在mainfrm中重新定义吗?
我在mainfrm中把UWM_MOUSEHOOK注册为同一个字符串,可以运行,但是不能接受到DLL中的消息。
??
谢谢大家了。
 
///////////////////////////////////////////////////////////////////
mydll.cpp
WH_SHELL系统钩子,当系统应用程序打开时,用GetWindowText获取应用程序窗口标题
///////////////////////////////////////////////////////////////////

LRESULT ShellHookproc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode==HSHELL_WINDOWCREATED)
{
HWND hWnd=(HWND)lParam;
char szWinCaption[256];
if(!::GetWindowText(hWnd,szWinCaption,256))
*szWinCaption = 0;
::MessageBox(hMainWnd,szWinCaption,"aaa",MB_OK);
}
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
运行程序后,消息对话框显示szWindowText为空,咋回事?
怎样获取目标窗口句柄,HWND hWnd=(HWND)lParam 行不行?
谢谢大家了!
 
后退
顶部