导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

g_hWnd=m_hWnd 是什么意思?区别呢?g_hInst和g_hWnd;区别呢,这些变量时系统的还是可以人为定义

wykqhyjs 广东省电信规划设计院有限公司 研究人员  2010-07-23 02:34:55
下面代码中的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 有什么区别
好几个问题 谢谢
...全文
169 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Liberty-Bird 2010-07-24
g_hWnd, g_hMouse,g_hKeyboard这三个变量应该是在类外部声明的全局变量,且在OnInitDialog()函数之前初始化为NULL;OnInitDialog()函数对其初始化赋值,并安装钩子,而后钩子响应函数开始运行。
HINSTANCE 是应用程序实例句柄,HWND 是窗口句柄
回复
C瓜哥 2010-07-23
MSDN里面已经讲得很清楚了
回复
wltg2001 2010-07-23
[Quote=引用 4 楼 wykqhyjs 的回复:]
引用 2 楼 flyskytoday 的回复:
代码中g_hWnd的定义是这样的:HWND g_hWnd=NULL;
m_hWnd是默认的窗口句柄只要在CWnd类继承的类都有
g_hWnd=m_hWnd就是窗口句柄的赋值

HINSTANCE g_hInst;不清楚

那赋值在逻辑上干嘛用啊
[/Quote]
m_hWnd是CWnd类的成员变量,是CWnd对象相关联的窗口的句柄,你上面的代码应该是一个钩子代码,估计钩子程序在后面要用到这个下钩子的窗口的句柄,所以定义了一个全局变量g_hWnd用来保存这个句柄。
你所说的有什么用,从你的代码上看,g_hWnd应该是一个共享的变量,如果是全局钩子中要向下钩子的窗口发消息的话, 一般就用到这个了。不过,这个用处只是我猜想的,总之,g_hWnd=m_hWnd就是将主对话框的窗口句柄保存下来,方便在别的地方用。
回复
Sou2012 2010-07-23
Question: HINSTANCE 和HWND 有什么区别
Answer: HINSTANCE 和 HWND都是句柄,但又有不同,
HINSTANCE 是应用程序实例句柄, HWND 是窗口句柄
回复
wykqhyjs 2010-07-23
[Quote=引用 2 楼 flyskytoday 的回复:]
代码中g_hWnd的定义是这样的:HWND g_hWnd=NULL;
m_hWnd是默认的窗口句柄只要在CWnd类继承的类都有
g_hWnd=m_hWnd就是窗口句柄的赋值

HINSTANCE g_hInst;不清楚
[/Quote]
那赋值在逻辑上干嘛用啊
回复
flyskytoday 2010-07-23
查了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所返回的句柄
回复
flyskytoday 2010-07-23
代码中g_hWnd的定义是这样的:HWND g_hWnd=NULL;
m_hWnd是默认的窗口句柄只要在CWnd类继承的类都有
g_hWnd=m_hWnd就是窗口句柄的赋值

HINSTANCE g_hInst;不清楚
回复
wltg2001 2010-07-23
又开了一帖?你的分可真多。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……