为啥这个窗口没有出现

Posted

技术标签:

【中文标题】为啥这个窗口没有出现【英文标题】:why is this window not appearing为什么这个窗口没有出现 【发布时间】:2019-08-03 19:23:35 【问题描述】:

我希望按钮的回调方法在每次单击按钮时实例化一个窗口(带有编辑器),这可能会导致多个窗口同时显示编辑器。现在,如果只有一个出现,我会很高兴——它不会出现。

也欢迎对 FLTK 和 C++ 编程实践提出一般性意见。

#include <FL/Fl.H> 
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Text_Buffer.H>

class MainWin : public Fl_Window 

    public:
        MainWin(int w, int h, const char *title);
        ~MainWin();
        Fl_Button* gobtn;
        Fl_Text_Editor* ed; // first editor included with main window
        Fl_Text_Buffer* buf;
    private:
        static void gomthd(Fl_Widget *, void *);        // "go" method
;

class AdditionalWin : public Fl_Window    // more editors if necessary
    public:
        AdditionalWin(int w, int h, const char *title);
        ~AdditionalWin();
        Fl_Text_Editor *ed;
        Fl_Text_Buffer *buf;
;

int main () 
    MainWin win(105, 405, "main");
    return Fl::run();


MainWin::MainWin(int w, int h, const char* title):Fl_Window(w,h,title) 

    gobtn = new Fl_Button(8, 38, 35, 20, "go");
    gobtn->callback(gomthd, this);

    ed = new Fl_Text_Editor(6, 67, 93, 331);
    buf = new Fl_Text_Buffer();
    ed->buffer(buf);

    end();
    resizable(this);
    show();


AdditionalWin::AdditionalWin(int w, int h, const char *title):Fl_Window(w, h, title) 

    ed = new Fl_Text_Editor(6, 67, 93, 331);
    buf = new Fl_Text_Buffer();
    ed->buffer(buf);
    end();
    resizable(this);
    show();



void MainWin::gomthd(Fl_Widget* o, void* v) 

    AdditionalWin awin(105, 405, "more");
    awin.position(1, 1);
    awin.show();          // ??? nothing appears


MainWin::~MainWin()
AdditionalWin::~AdditionalWin()

【问题讨论】:

【参考方案1】:

派对很晚,但仍然:我认为新窗口永远不会显示,因为 awin 作为一个局部变量,一旦 MainWin::gomthd() 函数返回就会被销毁。

【讨论】:

以上是关于为啥这个窗口没有出现的主要内容,如果未能解决你的问题,请参考以下文章

简单的WINDOWS程序问题 为啥没有显示窗口? CREATEWINDOW的第一个参数“已注册的窗口类名”该写啥啊?

为啥某些 Flask 会话值在关闭浏览器窗口后会从会话中消失,但稍后会在没有我添加它们的情况下重新出现?

为啥开启电脑时会出现“insert a smart card”的呢?使用电脑是老是会弹出“索引器停止工作”的窗口呢?

为啥我的3dmax渲染不了图,一渲染就出现一个V-Ray exception这个窗口

为啥我的 Write-Verbose 消息没有出现?

初学QT,在进度条上加一个label,为啥会出现白色底纹啊?哪位大侠能告诉我,这是啥原因啊?