我正在尝试将动画 GIF 图像嵌入到 wxWidgets C++ 程序中。我可以从文件加载图像并像这样显示它:
wxAnimationCtrl *an = new wxAnimationCtrl(this, wxID_ANY, wxAnimation(wxT("image.gif"), wxANIMATION_TYPE_ANY), wxPoint(150,0));
an->Play();
Run Code Online (Sandbox Code Playgroud)
但我宁愿将 GIF 图像放在我的 resources.rc 文件中,以便将其编译为可执行文件。我该怎么做?
如何使(它在-> -> ...wxGrid之后继承)对象大小适合父级大小?我尝试了方法,但不起作用。
方法:wxScrollerWindowwxWindowswxPanelFitOnInit
bool MyApp::OnInit()
{
wxFrame * win = new wxFrame(NULL, -1, _T("App"), wxPoint(300,300), wxSize(400,300), wxDEFAULT_FRAME_STYLE);
wxPanel * panel = new wxPanel(win, -1);
wxGrid * grid = new wxGrid(panel, -1, wxPoint(5,5), wxSize(300,200));
grid->SetDefaultColSize(120);
grid->SetDefaultRowSize(55);
grid->SetRowLabelSize(55);
grid->SetColLabelSize(25);
grid->CreateGrid(2,6,wxGrid::wxGridSelectCells);
grid->Fit();
win->Show();
return true;
}
Run Code Online (Sandbox Code Playgroud)
MyApp继承后wxApp。
我正在处理一个项目,其中一个函数wx.pyDeadObject Error由于任务延迟而抛出 a 。
我在 wx 中读到过,您可以通过运行来检查 c++ 对象是否仍然存在if self:,但是这在 wxPython 3.0.2 中不再有效。使用 wx 3。
我已将函数修改为以下内容:
def SetData(self, delayedResult):
if not self or not self.list:
return
data = []
torrents = delayedResult.get()
for torrent in torrents:
data.append((torrent.infohash, [torrent.name], torrent, ThumbnailListItemNoTorrent))
self_exist = True
list_exists = True
if not self:
self_exist = False
if not self.list:
list_exists = False
try:
self.list.SetData(data)
self.list.SetupScrolling()
except wx.PyDeadObjectError:
print "Self existed: %s and self.list existed: %s" % (self_exist, list_exists)
Run Code Online (Sandbox Code Playgroud)
它已经通过了第一个 …
这是一个关于wxBoxSizer的问题。我正在实现一个自定义 wxWidget,如可折叠窗格。
问题是:我有一个 wxBoxSizer (Sizer1),并且我添加了另一个 wxBoxSizer (Sizer2) 作为其子项。如果我更改 Sizer2 的大小,如何使 Sizer1 自动或手动更新其大小?
在 Sizer2 上调用 SetSize() 之后,我尝试在 Sizer1 上调用Fit () 和Layout (),但它不会更改 Sizer1 的大小。
请帮忙,谢谢!
当我开始使用 wxWidgets(在 code::blocks 中)进行 C++ 编程时,我经常遇到这样的问题:我不知道如何以良好的方式使用 wxString。主要原因是C++中已经有几种字符串类型,而wxWidgets现在又添加了另一种。我已经从另一个没有 wxWidgets 的项目导入了一些类,所以现在一切都需要兼容。
这导致了几个问题:
我正在尝试在 Windows 10 下使用 Visual Studio Community 2015 运行最小的 wxWidgets 示例。wxWidgets 版本是 3.1.0。
我使用以下命令编译了 wxWidgets:
nmake -f makefile.vc SHARED=1 UNICODE=1 MONOLITHIC=1 BUILD=release
Run Code Online (Sandbox Code Playgroud)
通过上述命令wxWidgets编译成功。
最小的 wxWidgets 示例编译良好,但我在发布版本中收到以下链接错误(尚未尝试调试):
error LNK2001: unresolved external symbol "void (__cdecl* wxTheAssertHandler)(class wxString const &,int,class wxString const &,class wxString const &,class wxString const &)" (?wxTheAssertHandler@@3P6AXABVwxString@@H000@ZA)
1>Source.obj : error LNK2001: unresolved external symbol "class wxEventTypeTag<class wxCommandEvent> const wxEVT_MENU" (?wxEVT_MENU@@3V?$wxEventTypeTag@VwxCommandEvent@@@@B)
1>Source.obj : error LNK2001: unresolved external symbol "protected: static class wxAppConsole * (__cdecl* wxAppConsoleBase::ms_appInitFn)(void)" (?ms_appInitFn@wxAppConsoleBase@@1P6APAVwxAppConsole@@XZA)
1>Source.obj : …Run Code Online (Sandbox Code Playgroud) 目前,我正在使用 wxWidgets 的 wxGenericDirCtrl,它为我提供了目录树的用户界面。它看起来像这样:
但是,我希望它看起来像这样:
在与 wxWidgets 开发人员交谈时,他们建议一种好的方法是修改 wxGenericDirCtrl 类以使用本机 Windows 目录控件。我想自己将此功能贡献给 wxWidgets,但我不确定从哪里开始,并且可以使用一些建议来帮助我开始。
问题:
我使用 SDL 制作了一个小应用程序来显示一些精灵动画,效果非常好。渲染尽可能平滑非常重要。
由于现在我需要一些 GUI,我决定使用 wxWidgets 3 创建类似的应用程序,但现在我还可以添加一些 GUI 元素,如菜单、模式等。
在深入研究 wxWidget 的 wiki 后,我发现有不同的方法可以绘制到窗口中。
例如:
我还发现了其他类型的类,例如“图形上下文类”,我仍然不确定它们是否对我的需要有用。
我的应用程序已经使用了一个只需要复制的内部缓冲区。
所以我的问题是在 wxWidgets 上执行此操作最合适的方法是什么?而且,该解决方案会带来多少性能/开销?
wxWidgets 在窗口内绘制像素的不同方法之间的性能/开销有何差异?为什么有人使用 OnPaint 事件,而其他人则不使用。
我想在我的应用程序中使用 wxTimer,但我不想使用预处理器宏来绑定事件。相反,我想在 CTOR 调用期间使用Bind()将事件绑定到我的 ui 元素。
绑定我的计时器后,它不会启动或不会调用事件处理程序。根据这个,它应该像我想要的那样工作。我也不想用Connect()。以同样的方式绑定按钮效果很好。这是一个最小的例子:
最小示例:
#include <wx/wx.h>
#include <iostream>
class MainFrame : public wxFrame
{
private:
const int DELTA_TIME = 100; // time between timer events (in ms)
private:
wxTimer* timer = nullptr;
void OnTimer(wxTimerEvent& evt);
void OnButtonClick(wxCommandEvent& evt);
public:
MainFrame();
virtual ~MainFrame();
};
void MainFrame::OnTimer(wxTimerEvent& evt)
{
std::cout << "Timer Event!" << std::endl; // never happens
}
void MainFrame::OnButtonClick(wxCommandEvent& evt)
{
std::cout << "Button Event!" << std::endl; // works just …Run Code Online (Sandbox Code Playgroud)