DLL中的回调函数 怎么使用全局变量
我想做个老板键的软件。思路是: 让用户定义20个受托管的窗口,然后把这20个窗口的HWND传到DLL里面去。再有回调函数比较得出是否要让窗口隐藏。
DLL 全局变量:
#define MaxTitleNum 20
HWND myhwnd[MaxTitleNum]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
bool show=false;
DllExport void WINAPI InstallLaunchEv() //挂载键盘钩子
{
Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)LauncherHook,theApp.m_hInstance,0);
}
DllExport void WINAPI SetHwnd(HWND m_hwnd[]) //传入要托管的20个窗口的hwnd
{
for(int i=0;i<MaxTitleNum;i++)
{
::myhwnd[i]=m_hwnd[i];
}
show=false;
}
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)//回调
{
if(nCode==HC_ACTION)
{
if(wParam == VK_RETURN && GetAsyncKeyState(VK_CONTROL) < 0 && lParam >= 0)
{
if(show==false)
{
for(int i=0;i<MaxTitleNum;i++)
{
if(::myhwnd[i]!=0)
{
::ShowWindow(::myhwnd[i],SW_HIDE);
}
}
show=true;
}
else
{
for(int i=0;i<MaxTitleNum;i++)
{
if(::myhwnd[i]!=0)
{
::ShowWindow(::myhwnd[i],SW_SHOW);
}
}
show=false;
}
}
}
return CallNextHookEx(Hook,nCode,wParam,lParam);
}
现在我发现SetHwnd时候myhwnd[i]还是有值的,但是到了回调函数里面myhwnd[i]就都变成零了
请高人指点 谢谢