当前位置:C++技术网 > 资讯 > 获取窗口类所属的应用程序实例句柄

获取窗口类所属的应用程序实例句柄

更新时间:2018-02-02 16:49:50浏览次数:1+次

HMODULE hModule = (HMODULE)GetClassLong(hwnd,GCL_HMODULE); 
HICON hIcon = LoadIcon((HINSTANCE)hModule,lpIconName); 


为什么hIcon接收不到任何值呢


C++技术网会员解答:

    系统的图标,不需要传递任何句柄,代码如下:

HICON hIcon = LoadIcon(NULL,IDI_HAND);
    凡是你给定了句柄的,系统就会到这个指定的句柄对应的应用程序里去寻找对应的资源。而这个应用程序并没有,所以返回的就是空句柄,即0x00000000。

    系统的图标、光标等,都是系统资源,不属于任何应用程序,所以加载图标或光标的时候,不要传递任何应用程序的实例句柄。实例句柄为空,函数就会去系统寻找对应的资源。如果不为空,函数就会去从这个应用程序寻找。

    如果你在应用程序中内置了图标,并给定了ID,那么此时你就需要用自己的程序的实例句柄去加载自己的图标。总之,你记住一个用法,不传递实例句柄,就是用系统的资源,传递了,则用对应的程序的资源。而标准的光标等资源都是系统的。

    另外,如果函数没有取到预期的值,请认真查阅函数的说明文档,如MSDN,里面会有详细的参数用法和返回结果说明,还有注意事项。一定要用熟MSDN。