gpt4 book ai didi

c++ - cairo 上下文指针检查的好处

转载 作者:行者123 更新时间:2023-11-30 04:02:35 26 4
gpt4 key购买 nike

如果我们不检查 cairo 上下文是否存在会发生什么,如果返回 false 会发生什么,例如:

bool MyClass::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
if ( !cr) return false; // what realy happens when we return false?
// is the function called once again?
}

// approach 2
bool MyClass::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
// do stuff
return true; // works just fine without checking so why to check??
}

有什么好处,为什么要检查上下文?

如果返回 false 会怎样?

最佳答案

Thisvirtual bool Gtk::Widget::on_draw(const::Cairo::RefPtr<::Cairo::Context>& cr) 的文档.我假设,你正在覆盖它或类似的东西。文档没有说明返回值,但声明它是 Gtk::Widget::signal_draw() 的默认处理程序。 .这是该文档的引述:

Returns

true to stop other handlers from being invoked for the event. % false to propagate the event further.

如果cr没有指向任何东西,那么调用 draw 事件的进一步处理程序可能没有意义。然后,所有实际使用 cr 的处理程序无论如何都应该检查一下,所以我认为没有必要在这里检查。如果你有很多处理程序,当它们都不能工作时返回 true 可能会减少一些开销。我猜测事件的停止对于控制用户操作的事件流比绘制事件更有用。

只有在 cr 时才返回 false没有指向任何对我来说似乎很奇怪的东西。不检查就返回 true 应该会阻止其他处理程序,所以这也有点奇怪。

关于c++ - cairo 上下文指针检查的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com