HINSTANCE,HWND、HMODULE 详解

    技术2022-05-20  37

    一、HINSTANCE,HWND和ID值的用法及意义和区别

    HINSTANCE;应用程序实例句柄,它是一个唯一用来标识程序进程的32位的变量, HWND:是窗口句柄,有很多种句柄,还有HBRUSH,HFONT,HMENU等等 ID:是一些控件或是选项的标识符,在程序中用到对他们的操作时可以用这个ID来访问这个控件或是其他什么

    二、 HINSTANCE和HMODULE这两种类型的句柄,用法不同么?

    hmodule是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址,比如exe, dll等模块等。hinstance在win32下与hmodule是相同的东西,在win32下还存在主要是因为win16程序使用hinstance来区别taskHINSTANCE是应用程序的实例句柄    获取方法 HINSTANCE AfxGetInstanceHandle( );    或者AfxGetApp( );  得到一个CWINAPP类的指针

    三、

    Handle        是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。        在Windows环境中,句柄是用来标识项目的,这些项目包括:模块(module)、任务(task)、实例 (instance)、文件 (file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI object),包括位图(bitmap),画刷 (brush),元文件(metafile),调色板(palette),画笔(pen),区域 (region),以及设备描述表 (device context)。          WONDOWS系统对内核对象以链表的形式进行管理,载入到内存中的每一个内核对象都有一个线性地址,同时相对系统来说,在串列中有一个索引位置,这个索引位置就是内核对象的handle。       句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。        句柄只有当唯一的确定了一个项目的时候,它才开始有意义。句柄对应着项目表中的一项,只是一个索引值,不是物理地址,应用程序还不能直接存取这块内存,而只有WINDOWS本身才能直接存取这个表,应用程序只能通过API函数来处理不同的句柄。 HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址。 HINSTANCE  在win32下与HMODULE是相同的东西,在Win32下还存在主要是因为Win16 程序使用HINSTANCE来区别任务,等同于 HMODULE。

    最新回复(0)