C++ wxWidgets在编译时包含图像
我一直在尝试制作一个简单的wxWidgets程序,只需一个带有图片的按钮。我已经能够很容易地制作带有图像的按钮,但是当包含它时,我的问题就出现了 到目前为止,我只能在运行时获取映像(映像必须与.exe文件位于同一文件夹中;否则,我会遇到错误2:系统找不到指定的文件)。使用这种方法,我没有问题——程序运行得很好。但是,我想做的是#包含该文件,以便在编译时嵌入它,这样它就不需要在运行时可用 我尝试了#包括该文件(作为.png和作为.xpm),也尝试了将其添加到资源包括中(这是在Visual Studio 2017上)。这两种方法都不起作用——第一种方法仍然要求图像位于同一文件夹中,第二种方法在编译过程中失败(据我所知,它无法读取.xpm文件) 以下是相关代码(如果有帮助):C++ wxWidgets在编译时包含图像,c++,visual-c++,runtime,wxwidgets,compile-time,C++,Visual C++,Runtime,Wxwidgets,Compile Time,我一直在尝试制作一个简单的wxWidgets程序,只需一个带有图片的按钮。我已经能够很容易地制作带有图像的按钮,但是当包含它时,我的问题就出现了 到目前为止,我只能在运行时获取映像(映像必须与.exe文件位于同一文件夹中;否则,我会遇到错误2:系统找不到指定的文件)。使用这种方法,我没有问题——程序运行得很好。但是,我想做的是#包含该文件,以便在编译时嵌入它,这样它就不需要在运行时可用 我尝试了#包括该文件(作为.png和作为.xpm),也尝试了将其添加到资源包括中(这是在Visual Stud
/*relevant includes*/
#include "happyFace.png" //this isn't working. the file is still needed
||
#include "happyFace.xpm" //ditto
/*I have also tried putting these lines in the resource includes.*/
/*code*/
wxInitAllImageHandlers();
wxBitmap bitmap("happyFace.xpm", wxBITMAP_TYPE_XPM); //only works in same directory at run-time
||
wxBitmap bitmap("happyFace.png", wxBITMAP_TYPE_PNG); //ditto
wxButton *button = new wxButton(this, ID_BMP_BUTTON);
button->SetBitmap(bitmap);
//the rest of the button programming and stuff
对不起,如果我没有提供足够的信息;如有必要,我可以提供更多。我真的很感激任何帮助。谢谢 有两种可能性。。。数字1是最简单的。我已经有很长一段时间没有写我正在看的代码了,所以细节是模糊的
资源文件中。假设资源的名称为sample.rc
。然后可以像这样使用它来设置主图标
SetIcon(wxICON(sample));
dj::captured_file &c1file(dj::main_cursor);
wxMemoryInputStream cistr(c1file.contents, c1file.size);
cursor1 = wxCursor(wxImage(cistr, wxBITMAP_TYPE_CUR));
仅供参考,我定义了结构dj::captured_文件,如下所示:
struct captured_file {
const char *name;
const unsigned long size;
const void *contents;
captured_file(const char*fn, size_t sz, const void*c)
: name(fn)
, contents(c)
, size(sz)
{}
};
有两种可能。。。数字1是最简单的。我已经有很长一段时间没有写我正在看的代码了,所以细节是模糊的
资源文件中。假设资源的名称为sample.rc
。然后可以像这样使用它来设置主图标
SetIcon(wxICON(sample));
dj::captured_file &c1file(dj::main_cursor);
wxMemoryInputStream cistr(c1file.contents, c1file.size);
cursor1 = wxCursor(wxImage(cistr, wxBITMAP_TYPE_CUR));
仅供参考,我定义了结构dj::captured_文件,如下所示:
struct captured_file {
const char *name;
const unsigned long size;
const void *contents;
captured_file(const char*fn, size_t sz, const void*c)
: name(fn)
, contents(c)
, size(sz)
{}
};
以下是您应该如何做:
#include "happyFace.xpm"
wxBitmap bitmap = wxBitmap( happyFace ); // assuming the variable name is "happyFace" inside the xpm
然后像往常一样使用位图对象。假设happyFace.xpm文件可用于编译。以下是您应该如何进行编译:
#include "happyFace.xpm"
wxBitmap bitmap = wxBitmap( happyFace ); // assuming the variable name is "happyFace" inside the xpm
然后像往常一样使用位图对象。假设happyFace.xpm文件可用于编译。谢谢,但如何在程序中包含图像以供使用?(不是程序的图标)我已经将PNG添加到了资源文件中(据我所知),但是程序在运行时仍然需要该图像。使用wxBITMAP_PNG(示例图片)谢谢,但是您如何在程序中包含图像以供使用?(不是程序的图标)我已经将PNG添加到了资源文件中(据我所知),但是pr