对话框资源和代码都在DLL中,通过热键呼出,但是为什么对话框无法正常显示出来,只是一块停住的游戏背景,鼠标移上去也看不到,但却存在,如果瞄准标题栏点住鼠标能显示出来,放开就没了?
用模式对话框能显示出来,但鼠标移上去还是看不到。
技术文章中有模式文章:“在DirectX下弹出对话框 ”
http://www.csdn.net/develop/Read_Article.asp?Id=15381

解决方案 »

  1.   

    呼出前先调用IDIRECTSURFACE->FlipToGDISurface()
      

  2.   

    同时要suspend该进程里面的其他所有线程
      

  3.   

    DIRECTX全屏游戏
    应该比较特殊~
      

  4.   

    你的对话框资源里面一定没有visible 哦?
    不改资源就加函数ShowWindow()也行....
      

  5.   

    你再出对话框之前先showcursor一下。
      

  6.   

    //today i implement an example like this ,maybe help you
    LRESULT __declspec(dllexport)__stdcall  CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        //if(((DWORD)lParam & 0x40000000) && (HC_ACTION == nCode));
        WORD wKey = (WORD)wParam;
        if((HIWORD(lParam) & KF_UP) == 0 && HC_ACTION == nCode)
        {       
            if(wKey == VK_ADD)//是热键
            {
                //获取前台窗口(游戏窗口)
                HWND hWnd = ::GetForegroundWindow();
    if(!g_bExist )
    {
    g_pDlg = new CNetClientDlg;
    g_pDlg->Create(IDD_STATDIALOG, CWnd::FromHandle(hWnd));
    g_pDlg->ShowWindow(SW_SHOW);
    g_bExist=1;
    }
            }
        }    LRESULT RetVal = CallNextHookEx(g_hKeyHook, nCode, wParam, lParam );
        return  RetVal;}
      

  7.   

    同意 kingzai(studying C#) 记得要加AFX_MANAGE_STATE(AfxGetStaticModuleState());