MFC 单文档模版SDI中 取得当前应用程序实例句柄

时间:2022-02-23 10:08:23

1 在CMyProjectApp类中

在这个类的源文件中会有一个该类的实例CMyPrjectApp  theApp;

该类继承自CWinApp类, 类中有一个成员m_hInstance即为当前应用程序实例句柄。

MSDN中:可以用全局函数AfxGetInstanceHandle()取得。

 

2 WINE32 API   GetWindowLong

HINSTANCE hInstance =  (HINSTANCE) GetwindowLong(m_hWnd /* 窗口句柄*/, GWL_HINSTANCE);

3 AfxGetApp()

全局函数返回一个CWinApp * 指针,再取得成员函数m_hInstance

 

3 Example

加在自定义图标(非系统)

m_hIcons[0]=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));

m_hIcons[1]=LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON2));

m_hIcons[2]=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3));

m_hIcons[3]=LoadIcon( (HINSTANCE)GetWindowLong(m_hWnd, GWL_HINSTANCE) ,MAKEINTRESOURCE(IDI_ICON4)); 

NOTE:如果是加在系统的标准图标,则:LoadIcon(NULL, IDI_XXX);

MAKEINTRESOURCE(WORD para)  根据资源ID返回一个指向该资源的字符指针,见MSDN中::LoadIcon()用法

 

 

 

MFC 单文档模版SDI中 取得当前应用程序实例句柄?