从头开始创建 Visual C++ MFC 项目时如何添加图像?

Posted

技术标签:

【中文标题】从头开始创建 Visual C++ MFC 项目时如何添加图像?【英文标题】:How to add images when creating Visual C++ MFC project from scratch? 【发布时间】:2014-09-30 09:03:35 【问题描述】:

我正在尝试创建非常简单的 c++ MFC 项目。由于它非常简单,我需要从头开始创建它。

到目前为止,我的代码如下所示。但现在我需要添加图片控件,因此我的 Intent 使用 CImage 类。但是要使用 CImage 类,我需要将 altimage.h 标头添加到我的项目中。但是当我这样做时,它给出了一个无法打开源文件 altimage.h 的错误。所以

    我该如何克服这个问题。 如何在从头开始创建 MFC 项目时添加我需要的文件。

请帮我解决这个问题。

谢谢

#include <afxwin.h>      //MFC core and standard components
//#include <altimage>
#include "resource.h"    //main symbols

//-----------------------------------------------------------------------------------------
//Globals
//CEdit * TEST;

CEdit * RECOG_CHARS;
CButton * BTN_CONVERT;
CButton  * BTN_QUIT;
CStatic * IMG_IMAGE;

class HWCR_FORM : public CDialog

public:
    HWCR_FORM(CWnd* pParent = NULL) : CDialog(HWCR_FORM::IDD, pParent)
        

    // Dialog Data, name of dialog form
    enum IDD = ID_MAIN_INTERFACE ;


protected:

    virtual void DoDataExchange(CDataExchange* pDX)  CDialog::DoDataExchange(pDX); 
    //Called right after constructor. Initialize things here.

    virtual BOOL OnInitDialog()
    
        CDialog::OnInitDialog();

        RECOG_CHARS = (CEdit *)GetDlgItem(CE_ID_TEXT);
        BTN_CONVERT = (CButton *)GetDlgItem(CB_ID_START);
        BTN_QUIT = (CButton *)GetDlgItem(CB_ID_QUIT);
        IMG_IMAGE = (CStatic *)GetDlgItem(CS_ID_IMAGE);

        HBITMAP image = (HBITMAP)LoadImage(NULL,L"C:\\Users\\Kasun\\Desktop\\image.bmp",IMAGE_BITMAP,150,120,LR_LOADFROMFILE);
        IMG_IMAGE->SetBitmap(image);



        RECOG_CHARS->SetWindowTextW(L"Hi there");


        return true;
    

public:
    DECLARE_MESSAGE_MAP()
;


//-----------------------------------------------------------------------------------------
class HWCR : public CWinApp


public:
    HWCR()   

public:
    virtual BOOL InitInstance()
    
        CWinApp::InitInstance();
        SetRegistryKey(_T("Hills Of Darkness"));


        HWCR_FORM dlg;
        m_pMainWnd = &dlg;
        INT_PTR nResponse = dlg.DoModal();



        return FALSE;
     //close function

;


//-----------------------------------------------------------------------------------------
//Need a Message Map Macro for both CDialog and CWinApp
BEGIN_MESSAGE_MAP(HWCR_FORM, CDialog)
END_MESSAGE_MAP()
//-----------------------------------------------------------------------------------------

HWCR theApp; 

【问题讨论】:

【参考方案1】:

首先,为了使用CImage,你需要包含头文件

#include <atlimage.h> 

而不是

#include <altimage>

其次,确保此文件的目录包含在 MSVC 路径中... 通常它应该被包含,因为这个头文件是 MFC / Win32 SDK 的一部分......检查 VS 属性中的目录。

Z.

【讨论】:

我已经改变了你提到的第一个,第二个我应该在属性中检查什么字段。你能告诉我要遵循的确切步骤吗?这将是极大的帮助。谢谢 所以你把 和它仍然失败?如果是这样,请验证文件 atlimage.h 确实存在于您的系统上。查看 Visual C++ 的安装目录。 是的,当我添加它时,当我将光标定位到它说无法打开源文件时,它会在错误中以红色强调#include。 我应该检查哪些属性以了解是否添加了这些标头 注意:这些 ATL 头文件不是 Visual Studio Express 的一部分。那是你安装的吗?

以上是关于从头开始创建 Visual C++ MFC 项目时如何添加图像?的主要内容,如果未能解决你的问题,请参考以下文章

没有可用于新 C++ 项目的 MFC 模板 - Visual C++ Express

如何在 Visual C++ 2008 中将 MFC 应用程序项目添加到 Win32 应用程序项目

使用 C++ 和 Visual Studio 2008 的 MFC DLL

用于 Visual C++ 的简单面向对象的 2D 图形框架?

Visual Studio 中的vc++ 2005创建一个C++的项目,求有多线程的例子!!!

如何阻止 Visual C++ 在 MFC .rc 文件生成中使用本地机器区域设置?