wxWindow可以显示窗口吗?

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
tujh
Earned a small fee
Earned a small fee
Posts: 21
Joined: Wed Oct 12, 2011 2:40 pm

wxWindow可以显示窗口吗?

Post by tujh »

我想通过如下的代码来显示一个窗口,但是实际上这段代码是显示不了窗口的。为什么呢?有哪位大侠帮忙解答一下呢?吾将不胜感激。

wxWindow* win = new wxWindow(0,wxID_ANY,wxPoint(100,100),wxSize(200,200),wxBORDER_SUNKEN, _("Base Window"));
win->Show(true);
SetTopWindow(win);
samsam598
Super wx Problem Solver
Super wx Problem Solver
Posts: 340
Joined: Mon Oct 06, 2008 12:55 pm

Re: wxWindow可以显示窗口吗?

Post by samsam598 »

不行,对wxWindow来说,需要一个父窗口,wxFrame则非必需。下面程序可以验证下.new wxWindow(0,...)导致断言失败:

Code: Select all

../../src/msw/window.cpp(527) :assert "parent" failed in Create()
can't create wxWindow without parent

Code: Select all

#include <wx/wx.h>


class App:public wxApp
{
public:
    virtual bool OnInit();
};
IMPLEMENT_APP(App)
bool App::OnInit()
{
    //window will be created but it is invisible and it gets destroyed shortly after the program run.
    wxWindow* win=new wxWindow(&wxTopLevelWindow(),wxID_ANY,wxPoint(100,100),wxSize(200,200),wxBORDER_SUNKEN,_("Base Window"));

    //OK
    //wxFrame* win=new wxFrame(NULL,wxID_ANY,_T(""),wxDefaultPosition,wxDefaultSize);
    win->SetLabel(_T("hello"));
    win->Show(true);
    SetTopWindow(win);
    return true;

}
Regards,
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
tujh
Earned a small fee
Earned a small fee
Posts: 21
Joined: Wed Oct 12, 2011 2:40 pm

Re: wxWindow可以显示窗口吗?

Post by tujh »

首先谢谢你的回复。

我还有些疑问:
你说“对wxWindow来说,需要一个父窗口,wxFrame则非必需”,那么是不是说“在有父窗口的时候,它就可以显示”,但是我试了不行。还有“window will be created but it is invisible and it gets destroyed shortly after the program run”,这个是为什么呢? 在MFC中,window基类是可以显示的。这里的基类为什么不能显示呢?
samsam598
Super wx Problem Solver
Super wx Problem Solver
Posts: 340
Joined: Mon Oct 06, 2008 12:55 pm

Re: wxWindow可以显示窗口吗?

Post by samsam598 »

tujh wrote:首先谢谢你的回复。

我还有些疑问:
你说“对wxWindow来说,需要一个父窗口,wxFrame则非必需”,那么是不是说“在有父窗口的时候,它就可以显示”,但是我试了不行。还有“window will be created but it is invisible and it gets destroyed shortly after the program run”,这个是为什么呢? 在MFC中,window基类是可以显示的。这里的基类为什么不能显示呢?
对不起,关于有父窗口也不能显示的问题,如果已测试不行,那就不知了,我是根据文档提示想当然的,误导了兄弟,不好意思。
window will be created but it is invisible and it gets destroyed shortly after the program run=>
这个是我上面那行代码在测试时自已观察到程序的细小变化故而言之,请一并忽略吧。

我在英文坛子里问哈,你留意看有没有复。
http://forums.wxwidgets.org/viewtopic.php?f=1&t=31824
Regards,
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
tujh
Earned a small fee
Earned a small fee
Posts: 21
Joined: Wed Oct 12, 2011 2:40 pm

Re: wxWindow可以显示窗口吗?

Post by tujh »

samsam598 wrote:
tujh wrote:首先谢谢你的回复。

我还有些疑问:
你说“对wxWindow来说,需要一个父窗口,wxFrame则非必需”,那么是不是说“在有父窗口的时候,它就可以显示”,但是我试了不行。还有“window will be created but it is invisible and it gets destroyed shortly after the program run”,这个是为什么呢? 在MFC中,window基类是可以显示的。这里的基类为什么不能显示呢?
对不起,关于有父窗口也不能显示的问题,如果已测试不行,那就不知了,我是根据文档提示想当然的,误导了兄弟,不好意思。
window will be created but it is invisible and it gets destroyed shortly after the program run=>
这个是我上面那行代码在测试时自已观察到程序的细小变化故而言之,请一并忽略吧。

我在英文坛子里问哈,你留意看有没有复。
http://forums.wxwidgets.org/viewtopic.php?f=1&t=31824

谢谢。后继有进展咱们再交流。