好文章。
很棒的图书馆
再次祝贺你!干得漂亮
下午好。
问题出现在我意想不到的地方...
有一个程序--一个主窗口,一个对话窗口。一切正常。我又添加了一个对话窗口。
现在它们是这样运行的。我们打开一个对话窗口,一切正常。关闭它。打开第二个对话窗口,窗口中的元素对点击没有反应,或者说反应很奇怪(如截图所示)。直到点击窗口标题后,该窗口一切正常。但现在第一个窗口也出现了同样的问题,直到点击标题为止。
请问问题出在哪里?或者该去哪里找?
附加的文件:
123123123.gif
504 kb
我下载了软件包,并创建了 CTable 的图形用户界面演示。
#include <\\EasyAndFastGUI\\WndEvents.mqh> //+------------------------------------------------------------------+ //| 创建应用程序的类| //+------------------------------------------------------------------+ class CGUI : public CWndEvents { private: CWindow m_window; CTable m_table; public: bool CreateGUI(const int x, const int y, const string caption_text); private: bool CreateWindow(const int x, const int y, const int x_size, const int y_size, const string text); bool CreateTable(const int x_gap, const int y_gap); }; bool CGUI::CreateGUI(const int x, const int y, const string caption_text) { int x_size = 400, y_size = 400; if (!CreateWindow(x, y, x_size, y_size, caption_text)) { return(false); } if (!CreateTable(1, 20)) { return(false); } m_chart.Redraw(); return(true); } //+------------------------------------------------------------------+ //| 为控件创建表格 1| //+------------------------------------------------------------------+ bool CGUI::CreateWindow(const int x, const int y, const int x_size, const int y_size, const string caption_text) { CWndContainer::AddWindow(m_window); m_window.XSize(x_size); m_window.YSize(y_size); m_window.Alpha(255); m_window.IsMovable(true); m_window.ResizeMode(true); m_window.CloseButtonIsUsed(true); m_window.FullscreenButtonIsUsed(true); m_window.CollapseButtonIsUsed(true); m_window.TooltipsButtonIsUsed(true); m_window.RollUpSubwindowMode(true, true); m_window.TransparentOnlyCaption(true); //--- 设置工具提示 m_window.GetCloseButtonPointer().Tooltip("Close"); m_window.GetFullscreenButtonPointer().Tooltip("Fullscreen/Minimize"); m_window.GetCollapseButtonPointer().Tooltip("Collapse/Expand"); m_window.GetTooltipButtonPointer().Tooltip("Tooltips"); m_window.BackColor((color)ChartGetInteger(m_chart_id, CHART_COLOR_BACKGROUND)); m_window.BorderColor(clrMaroon); return(m_window.CreateWindow(m_chart_id, m_subwin, caption_text, x, y)); } //+------------------------------------------------------------------+ //| 创建渲染表| //+------------------------------------------------------------------+ bool CGUI::CreateTable(const int x_gap,const int y_gap) { m_table.MainPointer(m_window); int x_size = 300, y_size = 300; int column_width[] = {100, 200}; m_table.XSize(x_size); m_table.YSize(y_size); m_table.TableSize(2, 10); m_table.ColumnsWidth(column_width); m_table.CellYSize(30); ENUM_ALIGN_MODE column_align[]; ArrayResize(column_align, 2); ::ArrayInitialize(column_align, ALIGN_RIGHT); m_table.TextAlign(column_align); color bg_color = (color)ChartGetInteger(m_chart_id, CHART_COLOR_BACKGROUND); m_table.CellColor(bg_color); m_table.GridColor(bg_color); m_table.BorderColor(bg_color); m_table.FontSize(12); /* CScrollV *scroll_v = m_table.GetScrollVPointer(); scroll_v.ChangeThumbSize(0, 0); scroll_v.Hide(); scroll_v.IsVisible(false); CScrollH *scroll_h = m_table.GetScrollHPointer(); scroll_h.IsVisible(false); CScrollH *scroll_h = m_table.GetScrollHPointer(); scroll_h.ChangeThumbSize(0, 0); scroll_h.Hide(); scroll_h.IsVisible(false); //*/ //m_table.TextXOffset(5); //m_table.TextYOffset(4); m_table.ShowHeaders(false); m_table.SelectableRow(false); m_table.ColumnResizeMode(false); //m_table.IsZebraFormatRows(clrWhiteSmoke); //m_table.AutoXResizeMode(true); //m_table.AutoXResizeRightOffset(1); //m_table.AutoYResizeMode(true); //m_table.AutoYResizeBottomOffset(25); if (!m_table.CreateTable(x_gap, y_gap)) { return(false); } CWndContainer::AddToElementsArray(0, m_table); m_table.Update(true); m_window.Update(true); return(true); } //+------------------------------------------------------------------+ //| 专家初始化函数| //+------------------------------------------------------------------+ int OnInit() { //--- CGUI gui; gui.CreateGUI(10, 50, "Test GUI"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 专家去初始化函数| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| 专家勾选功能| //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+
但我发现 CTable 控件总是会留下 H/V 滚动条空间,我无法通过 Hide() 和 IsVisiable(false) 将其删除。
所以,你能给我一个解决方法吗?
非常感谢、
戴维
也许这个问题已经有人讨论过了,但我没有看到。在图表中添加新对象(如线条)后,如何使面板重绘?
我注意到,如果我最小化面板,它就已经在这些线条的上方了,但不是所有线条 :(((
traderEvgen:
也许这个问题已经有人讨论过了,但我没有看到。如何在图表中添加新对象(例如线条)后使面板重绘?
- 下载最新版本的库。
- 尝试调用CWndEvents::ResetWindow() 方法。
附注:程序库 将不再更新。所有必要的更改、修正和添加,如果有此需要,用户应学会自行完成。
Anatoli Kazharski:
- 下载最新版本的库。
- 尝试调用CWndEvents::ResetWindow() 方法。
附注: 该程序库将不再更新。所有必要的更改、修正和添加,如果需要,用户应学会自己进行。
明白,谢谢
我要试试
新文章 图形界面 XI: 集成标准图形库 (统合构建 16)已发布:
能够创建科学图表 (CGraphic 类) 的新版本图形库已于最近发布。创建图形界面的开发中函数库在本次更新中将引入创建图表的新版本控件。不同类型数据的可视化现在更加容易了。
结果如下所示:
图例. 5. MQL 测试应用程序的第四个选项卡 (坐标轴) 的控件。
作者:Anatoli Kazharski