MFC导入图标文件的方法

可以使用两种方法导入图标文件,一种是从项目资源中导入,另一种是从磁盘中导入。

1 从项目资源中导入图标

使用该方法导入图标文件时,必须先将图标文件导入到项目资源中。

1.1 图标文件资源的导入

选择资源视图选项卡,之后选择资源视图树型控件的XXX->XXX.rc->Icon”,其中XXX表示项目名称,如图1所示。

 

1 选择Icon资源文件夹

接下来在右键菜单中选择“添加资源”,之后在弹出的“添加资源”对话框中的“资源类型”中选择“Icon”,之后选择“导入”,如图2所示。

 

2 导入图标文件

在弹出的导入图标对话框中,将文件类型选择为图标文件(*.ico,之后选择要导入的图标,最后点击打开按键,导入该图标文件,如图3所示此时,在“资源视图”的“Icon”文件夹中,就会出现新导入的图标文件。

1.2 通过CWinApp::LoadIcon()函数获取图标文件句柄

该函数的格式为

HICON LoadIcon(UINT nIDResource) const;
其中,参数nIDResource 是项目图标文件资源的 ID ;返回值是该图标文件资源的句柄。

HICON hIcon = AfxGetApp()->LoadIconW(IDI_ICON1); 

3 导入选中的图标文件

其中,AfxGetApp()函数是MFC提供的全局函数,该函数的作用是返回指向应用程序对象的指针,即CWinApp类的指针。CWinApp类的指针调用该类的LoadIcon()函数导入图标文件,IDI_ICON1是在“1.1图标文件资源的导入”中导入的图标文件,该图标的句柄保存在LoadIcon()函数的返回值,即hIcon中。

1.2 通过LoadImage()函数获取图标文件句柄

LoadImage()Windows API函数,通过该函数也可以获取项目中图标资源的句柄。LoadImage()函数的格式是

HANDLE LoadImage(      
    HINSTANCE hinst,

    LPCTSTR lpszName,

    UINT uType,

    int cxDesired,

    int cyDesired,

    UINT fuLoad

);

其中,参数hinst表示包含该图像资源的模块的句柄;lpszName表示图像的名称;uType指定了图像的类型,通过该参数可以指定导入的图像类型是图标文件;cxDesiredcyDesired指定了要导入图标资源的宽度和高度;fuLoad是导入图像时的标志。LoadImage()函数的返回值是导入图像的句柄。通过以下代码可以获取图标资源的句柄:

HICON hIcon1 = (HICON)::LoadImage(

AfxGetInstanceHandle()

, MAKEINTRESOURCE(IDI_ICON1)

, IMAGE_ICON

, 0

, 0

, LR_DEFAULTCOLOR);

其中,AfxGetInstanceHandle()MFC的全局函数,该函数的作用是返回标识当前应用程序实例的句柄,即HINSTANCEMAKEINTRESOURCE()宏的作用是将一个整型资源ID转换为LPTSTR数据类型的IDIDI_ICON1是在“1.1图标文件资源的导入”中导入的图标文件IDIMAGE_ICON指定了导入的图像类型是图标资源;第4和第5个参数均为0,表示导入的图标文件使用原始的宽度和高度;LR_DEFAULTCOLOR表示图标文件使用默认的颜色。导入的图标文件句柄保存在hIcon1中。

2 从磁盘中导入图标文件

1.2通过LoadImage()函数获取图标文件句柄”中使用了Windows API函数LoadImage()从项目的图标文件资源中导入了图标文件句柄。通过该函数也可以将磁盘中的图标文件文件导入到程序中。此时,需要将LoadImage()函数的第一个参数设置为NULL,第二个参数指定图标文件文件的绝对路径,最后一个参数设置为LR_LOADFROMFILE即可。

HICON hIcon2 = (HICON)::LoadImage(
NULL
, _T("C:\\bing.ico")
, IMAGE_ICON
, 0
, 0
, LR_LOADFROMFILE
);
以上代码的作用是将C 盘根目录下的 bing.ico 图标文件文件导入到程序中,并将其句柄保存到变量 hIcon2 中。

MFC打开文件文件夹 一、利用API实现打开文件对话框和利用MFC来实现打开文件对话框。 方法一:API部分: // OPENFILENAME ofn; // TCHAR szFile[MAX_PATH]; // ZeroMemory(&ofn,sizeof(ofn)); // ofn.lStructSize = sizeof(ofn); // ofn.lpstrFile = szFile; // ofn.lpstrFile[0] = TEXT('/0'); // ofn.nMaxFile = sizeof(szFile); // ofn.lpstrFilter = TEXT("all/0*.*/0jpg/0*.jpg/0bmp/0*.bmp/0"); //定义三个选项,all,text和exe // ofn.nFilterIndex = 1; //定义首选项是哪一个 // ofn.lpstrFileTitle = NULL; // ofn.nMaxFileTitle = 0; // ofn.lpstrInitialDir = NULL; // ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; // if(GetOpenFileName(&ofn)) // { // ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,szFile); // } 方法二、MFC实现 // CFileDialog dlg(TRUE, NULL, NULL, // OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, // NULL); // // if(dlg.DoModal() == IDOK) // { // szFilename = dlg.GetPathName(); // ::MessageBox(NULL,szFilename,NULL,MB_OK); // } 注意:打开文件的方式和打开文件夹的方式是不同的。打开文件的方式是不断的打开直到出现末端为文件,否则遇到文件夹还要继续打开。而打开文件夹则是只要选择到一个路径的文件夹就打开。 下面的这种方式是打开文件夹:MFC实现。 static TCHAR strDirName[MAX_PATH]; BROWSEINFO bi; CString szString = TEXT("选择一个源文件文件夹"); bi.hwndOwner = ::GetFocus(); bi.pidlRoot = NULL; bi.pszDisplayName = strDirName; bi.lpszTitle = szString; bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi); if(pItemIDList == NULL) { return ; } ::SHGetPathFromIDList(pItemIDList, strDirName); CString str = strDirName; if(str != "" && str.Right(1) != '//') str += '//'; ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,str);
MFC 中使用资源文件可以方便地管理和加载应用程序所需的各种资源,包括图标、位图、字符串、对话框等。以下是使用资源文件方法: 1. 在 Visual Studio 中创建一个 MFC 应用程序项目。 2. 打开资源视图,右键单击 "资源文件",选择 "添加" -> "资源"。 3. 在资源视图中,可以看到各个资源类型的文件夹,如图标、位图、字符串等。 4. 右键单击相应的文件夹,选择 "导入" 或 "添加资源",然后选择要导入或添加的资源文件。例如,如果要添加一个位图资源,可以选择 "位图" 文件夹,然后右键单击选择 "导入",选择要导入的位图文件。 5. 在代码中使用资源文件中的资源。例如,如果要使用一个字符串资源,可以使用 AfxGetString() 函数来获取字符串值。如果要使用一个位图资源,可以使用 CBitmap 类来加载和显示位图。 下面是一个简单的示例代码,演示如何使用资源文件中的字符串和位图: ```cpp // 加载字符串资源 CString str; str = AfxGetString(IDS_MYSTRING); // IDS_MYSTRING 是字符串资源的 ID // 加载位图资源 CBitmap bmp; bmp.LoadBitmap(IDB_MYBITMAP); // IDB_MYBITMAP 是位图资源的 ID // 显示位图 CDC* pDC = GetDC(); CDC memDC; memDC.CreateCompatibleDC(pDC); memDC.SelectObject(&bmp); pDC->BitBlt(0, 0, bmp.GetWidth(), bmp.GetHeight(), &memDC, 0, 0, SRCCOPY); ReleaseDC(pDC); ``` 以上就是使用资源文件的一般方法。你可以根据具体的需求在资源文件中添加和使用其他类型的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值