在xml配置文件中配置一个cefcontrol控件,发现默认如果是隐藏的话会导致崩溃,崩溃在libcef.dll动态库中,配置PDB文件后发现是崩溃在render_widget_host_view_osr.cc文件
原来就是窗口矩形不能为0,搜索GetViewBounds函数是在哪里调用的。
全局搜索发现是NIM_DUILIB\ui_components\cef_control\handler\browser_handler.cpp文件
rect_cef_control设置位置
最后定位在NIM_DUILIB\ui_components\cef_control\control\cef_control_ui.cpp
原来是,Control控件,启动的时候若是隐藏状态,就不会调用SetPos,默认情况下rect_cef_contorl为空;最后导致崩溃,那为什么创建完成之后再隐藏不会崩溃呢,因为创建之后隐藏,不会调用SetPos也就不会更新rect_cef_contorl,所以也不会崩溃。
这也解释了为什么CefControl隐藏就崩溃,但是被遮挡却不会