下面代码中的g_hWnd=m_hWnd 是什么意思,另外HINSTANCE 和HWND 有什么区别
2.示例程序:
  1.新建一基于对话框工程,InnerHook,此过程的钩子是只拦截本进程的。
  2.在OnInitDialog()中添加代码:
   g_hWnd=m_hWnd;
g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());设置了鼠标钩子
g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());设置了键盘钩子
  3.完成钩子函数的编写:
HHOOK g_hKeyboard=NULL;
HHOOK g_hMouse;
HWND g_hWnd=NULL;
 
LRESULT CALLBACK MouseProc(
   int nCode,      // hook code
   WPARAM wParam,  // message identifier
   LPARAM lParam   // mouse coordinates
)
{
  return 1;
}
下面代码中的g_hWnd=m_hWnd 是什么意思?什么用处随便问下
HINSTANCE           g_hInst;
HWND                g_hWnd;
是经常看见的2个东东,他们分别是什么意思?区别呢?为什么他们的类型不同?一个是HINSTANCE 一个是HWND 
另外HINSTANCE 和HWND 有什么区别
好几个问题 谢谢

解决方案 »

  1.   

    代码中g_hWnd的定义是这样的:HWND g_hWnd=NULL;
    m_hWnd是默认的窗口句柄只要在CWnd类继承的类都有
    g_hWnd=m_hWnd就是窗口句柄的赋值HINSTANCE g_hInst;不清楚
      

  2.   

    查了MSDN
    An HINSTANCE to the current instance of the application. If called from within a DLL linked with the USRDLL version of MFC, an HINSTANCE to the DLL is returned.大概意思就是Dll所返回的句柄
      

  3.   

    Question: HINSTANCE 和HWND 有什么区别
    Answer: HINSTANCE 和 HWND都是句柄,但又有不同,
            HINSTANCE 是应用程序实例句柄, HWND 是窗口句柄
      

  4.   

     m_hWnd是CWnd类的成员变量,是CWnd对象相关联的窗口的句柄,你上面的代码应该是一个钩子代码,估计钩子程序在后面要用到这个下钩子的窗口的句柄,所以定义了一个全局变量g_hWnd用来保存这个句柄。
    你所说的有什么用,从你的代码上看,g_hWnd应该是一个共享的变量,如果是全局钩子中要向下钩子的窗口发消息的话, 一般就用到这个了。不过,这个用处只是我猜想的,总之,g_hWnd=m_hWnd就是将主对话框的窗口句柄保存下来,方便在别的地方用。
      

  5.   

    g_hWnd, g_hMouse,g_hKeyboard这三个变量应该是在类外部声明的全局变量,且在OnInitDialog()函数之前初始化为NULL;OnInitDialog()函数对其初始化赋值,并安装钩子,而后钩子响应函数开始运行。
    HINSTANCE 是应用程序实例句柄,HWND 是窗口句柄