DLL中的回调函数 如何使用全局变量

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]就都变成零了
请高人指点     谢谢

------解决方案--------------------
添加共享数据段

#pragma data_seg( ".test ")
//定义你的变量
#pragma data_seg()
#pragma comment(linker, "/section:.test,RWS ")