#pragma data_seg(".shared") // ".shared" is defined in exports.def to allow
HWND m_hHwndMouse = 0;
HHOOK m_hHookMouse = 0;
BOOL hover = true;
#pragma data_seg()
这个部分是用.def file
管理的EXPORTS
SetValuesMouse
MouseProc
SECTIONS
.shared READ WRITE SHARED
我正在指导这个dll(添加值)+试图改变BOOL悬停= true;通过自动调用DLL
来改变这个值DllCall("。 simplemousehook.dll"、"int"、"SetValuesMouse","hwnd",主要美元,"hwnd hhMouse美元[0],"BOOL",0)
这只是使
HWND m_hHwndMouse = 0;
HHOOK m_hHookMouse = 0;
在SetValuesMouse函数中修改的共享部分
void WINAPI SetValuesMouse(HWND hWnd, HHOOK hk, BOOL ho)
{
m_hHwndMouse = hWnd;
m_hHookMouse = hk;
hover = ho;
}
好的,现在我的鼠标钩子在DLL中知道在哪里发送消息(m_HWNDMOuse)
LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam )
{
case WM_MOUSEMOVE:
wParm = AU3_WM_MOUSEMOVE;
PostMessage(m_hHwndMouse, wParm,(WPARAM)( (MOUSEHOOKSTRUCT*) lParam )->hwnd, LPARAM(fromp));
这工作得很好,我的gui(这是hHwndMouse)通常从dll接收消息,所以显然我可以通过setvaluesmouse函数来改变它
但是…
如果我这样做
if (hover = 1)
{
.. do something here
}
在此之前,我通过SetValuesMouse函数将BOOL悬停值更改为0,dll忽略悬停值为0并且"在这里做一些事情"…
为什么不能正确读取bool并忽略…在这里做点什么?
我知道我可能犯了一个完全愚蠢的错误,但我忍不住要寻求帮助。
您在if
条件中缺少一个=
,应该是if (hover == 1)
。
One = sign在C语言中意味着赋值,当你错误地执行if-check时,你实际上是在改变hover的值并意外触发事件。
==是c中的相等操作符。