请问CWnd::m_hWnd成员和AfxGetInstanceHandle()得到的是不是一个东西?
请问CWnd::m_hWnd成员和AfxGetInstanceHandle()得到的是不是一个东西? 我觉得应该不是一个句柄,因为我看到MSDN上说AfxGetInstanceHandle()是指向当前应用程序实例的一个句柄,而 CWnd::n_hWnd是保存了CWnd对象的一个句柄,但是我高不 清楚它们之间的具体区别,我对对“窗口”和“应用程序”以及“句柄”和“实例”等概念还不是特别的清楚请高人给予指教,谢谢!万分感激!!
窗口是你在屏幕上看到的矩形框,窗口句柄用于操作窗口,每个窗口都有自己的窗口句柄,AfxGetInstanceHandle()得到的是应用程序系统上运行的一个进程实例
一个进程可以有多个窗口
this 指针:
this表示当前类的实例的指针,也就是说你 this 在哪个类里,这里 this 就指向哪个类。例如当 this 写在 CTreeView 类的函数里, this 指针就指向 CTreeView 的实例;
m_hInstance:
句柄是一个标识符,是拿来标识对象或者项目的,m_hInstance是应用程序的实例句柄,可以调用 AfxGetInstancdHandle获得句柄.
Example: HANDLE hInstance=AfxGetInstanceHandle();
HINSTANCE hInstance=AfxGetInstanceHandle();
m_hWnd:
m_hWnd十一个成员变量,最早定义在CWnd中,凡是CWnd派生的类中都有这个窗口类句柄,它是类或对象标示自己的句柄。
获取自己窗口类的句柄方法:
1 this->m_hWnd;
2 GetSafeHwnd();
3 AfxGetMainWnd()->m_hWnd;