FLTK 子窗口未在 Linux 上重绘

     2023-02-21     228

关键词:

【中文标题】FLTK 子窗口未在 Linux 上重绘【英文标题】:FLTK child window not redrawing on Linux 【发布时间】:2016-08-28 05:39:25 【问题描述】:

我正在开发一个希望发布的不错的开源项目,但是我遇到了一些问题,即子窗口在损坏后无法重绘。详情请看这张图:

这是我用来显示这个的代码:

void showMessageWindow (std::string strMessage, std::string strTitle)

    Fl_Window* msgWin = new Fl_Window(400, 255, NULL);
    if (strTitle == "")
        msgWin->label("Window Title");
    msgWin->box(FL_BORDER_FRAME);
    msgWin->set_non_modal();

    Fl_PNG_Image* img = new Fl_PNG_Image("/home/obaker/Pictures/info-icon.png");
    Fl_Box* ibox = new Fl_Box(20, 20, 48, 48);
    ibox->image(img);

    Fl_Multiline_Output* mOut = new Fl_Multiline_Output(90, 20, 275, 175, NULL);    
    mOut->box(FL_NO_BOX);
    mOut->wrap(true);
    mOut->readonly(true);
    mOut->cursor_color(FL_BACKGROUND_COLOR);    
    mOut->value(strdup(strMessage.c_str()));

    Fl_Button* btn = new Fl_Button(150, 210, 100, 35, "OK");
    btn->box(FL_GTK_UP_BOX);
    btn->shortcut(FL_Enter);
    btn->callback(msgBoxClose, msgWin);

    msgWin->add(ibox);
    msgWin->add(mOut);
    msgWin->add(btn);

    msgWin->show();

我曾尝试使用 Fl_Double_Window 代替 Fl_Window,但它看起来更糟:

虽然看起来“前卫”和“酷”,但它不适合我的项目。 :-)

我正在 Debian Linux 8、64 位、AMD Radeon HD 6670 显卡、8 GB RAM 上进行开发和测试。 Debian 提供的 FLTK 版本是 1.3 (1.3.2-6)。

父窗口是一个 Fl_Double_Window,它自己重绘就好了。

有什么人可以推荐强制这个子窗口在损坏时重新绘制自己?

提前感谢您! :-)

【问题讨论】:

【参考方案1】:

在 Chris 在 FLTK 论坛上的指导下,我能够解决这个问题。

必要的更改是:

msgWin->box(FL_BORDER_BOX)

而不是

msgWin->box(FL_BORDER_FRAME)

“用于输出的 FL_NO_BOX 也可能导致绘图伪影。更好 将输出背景颜色设置为窗口背景颜色:"

mOut->box(FL_FLAT_BOX);
mOut->color(msgWin->color());

感谢您的所有帮助! :-)

【讨论】:

Expo AuthSession 新窗口未在 Web 上重定向

】ExpoAuthSession新窗口未在Web上重定向【英文标题】:ExpoAuthSessionnewwindownotredirectingonWeb【发布时间】:2021-10-2405:09:44【问题描述】:我们正在使用AuthSession.startAsync在我们的应用程序中启动身份验证过程,该过程在iOS和Android上运行... 查看详情

带有按钮回调的新窗口未在 fltk 中打开

】带有按钮回调的新窗口未在fltk中打开【英文标题】:Newwindownotopeninginfltkwithbuttoncallback【发布时间】:2017-01-2314:04:25【问题描述】:我创建了一个按钮,单击该按钮时将通过回调打开一个新窗口,但是当单击此按钮时没有任何... 查看详情

c++ FLTK 图像重绘

】c++FLTK图像重绘【英文标题】:c++FLTKImageredraw【发布时间】:2014-10-2305:50:46【问题描述】:我正在制作一个简单的FLTK应用程序(在linux中),它需要在FL_Window中显示PNG图像。下一段代码:Fl_PNG_Image*pngImg;Fl_Box*boxImage;boxImage=newFl_Bo... 查看详情

当来自锁屏 iPhone 时在 didreceivelocalnotification 上重绘 GUI

】当来自锁屏iPhone时在didreceivelocalnotification上重绘GUI【英文标题】:redrawGUIondidreceivelocalnotificationwhencomefromlockscreeniphone【发布时间】:2011-04-2318:33:00【问题描述】:如何防止我的GUI在收到UILocalNotification后从锁定屏幕返回时重绘... 查看详情

自定义 UITableViewCell 不会在 setNeedsDisplay 上重绘

】自定义UITableViewCell不会在setNeedsDisplay上重绘【英文标题】:CustomUITableViewCellwon\'tredrawonsetNeedsDisplay【发布时间】:2010-05-1922:46:33【问题描述】:我创建了一个自定义UITableViewCell类,其中包含一个UIButton、一个UIImage和两个UILabels... 查看详情

是否可以使用标准 C++ 线程而不是 FLTK 超时来更新窗口?

】是否可以使用标准C++线程而不是FLTK超时来更新窗口?【英文标题】:IsitpossibletousestandardC++threadsinsteadofFLTKtimeoutstoupdatewindow?【发布时间】:2017-12-0220:04:47【问题描述】:我需要创建一个无需用户交互即可自行完成的简单动画。... 查看详情

FLTK 值更改和重绘等到回调之后:有啥办法吗?

】FLTK值更改和重绘等到回调之后:有啥办法吗?【英文标题】:FLTKvaluechangeandredrawwaitsuntilaftercallback:anywayaroundthis?FLTK值更改和重绘等到回调之后:有什么办法吗?【发布时间】:2014-02-2601:43:32【问题描述】:我是GUI新手,正在... 查看详情

SwiftUI:在设备方向上重绘会使计时器无效

】SwiftUI:在设备方向上重绘会使计时器无效【英文标题】:SwiftUI:RepaintonDeviceorientationinvalidatesTimer【发布时间】:2020-04-1419:15:52【问题描述】:我正在使用SwiftUI制作秒表。出于设计目的,我在方向更改时重新绘制UI,但这会使我... 查看详情

如何使用 FLTK 在 Windows、Mac OS X 和 Linux 中使窗口透明?

】如何使用FLTK在Windows、MacOSX和Linux中使窗口透明?【英文标题】:HowcanImakeawindowtransparentinWindows,MacOSX,andLinuxusingFLTK?【发布时间】:2014-11-0105:10:48【问题描述】:我正在使用FLTK1.3.2用C++编写应用程序。这是我用来在Windows7或8上使... 查看详情

Swift 4 - setNeedsDisplay 和 layoutIfNeeded 不在 self.UIView 上重绘 UILabel

】Swift4-setNeedsDisplay和layoutIfNeeded不在self.UIView上重绘UILabel【英文标题】:Swift4-setNeedsDisplayandlayoutIfNeedednotredrawingUILabelonself.UIView【发布时间】:2018-01-2905:54:52【问题描述】:基本上,我有一个自定义UILabel子类,它根据变量设置标... 查看详情

iOS:如何让后台线程在主线程上重绘视图

】iOS:如何让后台线程在主线程上重绘视图【英文标题】:iOS:Howtogetbackgroundthreadtoredrawviewonmainthread【发布时间】:2012-11-2121:21:06【问题描述】:我的应用程序将查询数据库50次,然后通过将正确的UIImageView添加到另一个UIImageView... 查看详情

FLTK 模态窗口

】FLTK模态窗口【英文标题】:FLTKModalWindows【发布时间】:2012-02-2819:27:44【问题描述】:我有一个FLTK程序,它有一个基本的GUI,偶尔会弹出一个通知窗口(一个与win32函数“MessageBox”非常相似的自定义函数)。该窗口在程序启动... 查看详情

页面未在来自 iOS 的 URLRequest 上重定向

】页面未在来自iOS的URLRequest上重定向【英文标题】:PageisnotredirectingonURLRequestfromiOS【发布时间】:2017-07-2422:18:58【问题描述】:我正在尝试使用Swift从iOS发出URLRequest,并通过url将一些数据发送到一种PHP服务器。leturl=URL(string:"http... 查看详情

使 UIImage 在@IB_Designable 的新位置上重绘

】使UIImage在@IB_Designable的新位置上重绘【英文标题】:MakingUIImageredrawonnewpositionon@IB_Designable【发布时间】:2016-11-0702:04:53【问题描述】:我正在创建这个IB_Designable类。它就像一个滑块。见图片。这两个元素都是用可伸缩的UIImages... 查看详情

通过 DLL 将子窗口添加到 Metatrader4 的图表 - 闪烁(不重绘)

】通过DLL将子窗口添加到Metatrader4的图表-闪烁(不重绘)【英文标题】:AddingchildwindowtoMetatrader4\'schartviaDLL-blinking(notredrawing)【发布时间】:2013-09-1614:46:07【问题描述】:我想在Metatrader4的图表窗口中添加一个子窗口,该窗口始终... 查看详情

FLTK双窗口和FLTK单窗口的区别

】FLTK双窗口和FLTK单窗口的区别【英文标题】:DifferencebetweenanFLTKDoubleWindowandaFLTKSingleWindow【发布时间】:2021-01-0802:15:29【问题描述】:我对@9​​87654321@和FLTKDoubleWindow之间的区别感到困惑。在双窗口的F​​LTK1.4.0文档中,我们得... 查看详情

Fltk 窗口等待

】Fltk窗口等待【英文标题】:FltkWindowwait【发布时间】:2011-11-2218:09:52【问题描述】:C++fltk:我有一个带有in_box和out_box的窗口,我如何制作它以便用户可以在in_box中键入回车,然后继续进行其余的事件。现在,窗口刚刚出现并... 查看详情

FLTK:窗口聚焦在 MacOS 上时的事件

】FLTK:窗口聚焦在MacOS上时的事件【英文标题】:FLTK:EventwhenawindowgetsfocusonMacOS【发布时间】:2017-07-2721:49:14【问题描述】:使用FLTK,我正在编写一个使用多个窗口的桌面应用程序。该应用程序管理一个打开的窗口列表,并在菜... 查看详情